什么是Java构造函数?

构造函数是强大的编程组件。 使用它们可以释放Java的全部潜力。
193 位读者喜欢这篇文章。
GitHub launches Open Source Friday 

Opensource.com

Java是(有争议地)开源、跨平台编程中无可争议的重量级选手。虽然有很多优秀跨平台 框架,但很少有像Java这样统一和直接的。

当然,Java也是一种非常复杂的语言,有其自身的细微之处和约定。 关于Java最常见的问题之一与构造函数有关:它们是什么,有什么用?

简而言之:构造函数是在Java中创建新对象时执行的操作。当您的Java应用程序创建您编写的类的实例时,它会检查构造函数。 如果构造函数存在,Java会在创建实例时运行构造函数中的代码。 这在几句话中塞进了大量的技术术语,但是当您看到它的实际作用时,它会变得更加清晰,因此请确保您已安装了Java 并准备好演示。

没有构造函数的生活

如果您正在编写Java代码,那么您已经在使用的构造函数了,即使您可能不知道。 Java中的所有类都有一个构造函数,因为即使您没有创建一个,Java也会在编译代码时为您创建一个。 但是,为了演示起见,请忽略Java提供的隐藏构造函数(因为默认构造函数不添加任何额外的功能),并看看没有显式构造函数的生活。

假设您正在编写一个简单的Java掷骰子应用程序,因为您想为游戏生成一个伪随机数。

首先,您可以创建骰子类来表示物理骰子。 知道您玩了很多龙与地下城,您决定创建一个20面的骰子。 在此示例代码中,变量 dice 是整数20,表示最大可能的骰子点数(20面的骰子不能掷出超过20的点数)。 变量 roll 是最终将成为随机数的占位符,而 rand 用作随机种子。

import java.util.Random;

public class DiceRoller {
  private int dice = 20;
  private int roll;
  private Random rand = new Random();

接下来,在 DiceRoller 类中创建一个函数,以执行计算机必须执行的步骤来模拟掷骰子:从 rand 中获取一个整数并将其分配给 roll 变量,加1来解释Java从0开始计数,但20面的骰子没有0值,然后打印结果。

public void Roller() {
	roll = rand.nextInt(dice);
	roll += 1;
	System.out.println (roll);
}

最后,生成 DiceRoller 类的一个实例并调用其主要函数 Roller

 // main loop
 public static void main (String[] args) {
	 System.out.printf("You rolled a ");

	 DiceRoller App = new DiceRoller();
	 App.Roller();
 }
}

只要您安装了Java开发环境(例如OpenJDK),就可以从终端运行您的应用程序

$ java dice.java
   You rolled a 12

在此示例中,没有显式构造函数。 这是一个完全有效且合法的Java应用程序,但它有点局限性。 例如,如果您把龙与地下城游戏放在一边,晚上玩Yahtzee游戏,则需要6面骰子。 在这个简单的示例中,更改代码不会有太多麻烦,但这在复杂的代码中不是一个现实的选择。 您可以使用构造函数来解决此问题。

构造函数的实际应用

此示例项目中的 DiceRoller 类表示一个虚拟骰子工厂:调用它时,它会创建一个虚拟骰子,然后“掷出”该骰子。 但是,通过编写自定义构造函数,您可以使您的Dice Roller应用程序询问您想模拟哪种骰子。

大多数代码都是相同的,除了构造函数接受一定数量的面数。 此数字尚不存在,但稍后将创建。

import java.util.Random;

public class DiceRoller {
	private int dice;  
	private int roll;
	private Random rand = new Random();

  // constructor 
  public DiceRoller(int sides) {
	dice = sides; 
  }

模拟掷骰子的函数保持不变

public void Roller() {
	roll = rand.nextInt(dice);
	roll += 1;
	System.out.println (roll);
}

代码的主要块将您在运行应用程序时提供的任何参数提供给它。 如果这是一个复杂的应用程序,您将仔细解析参数并检查意外的结果,但是对于此示例,采取的唯一预防措施是将参数字符串转换为整数类型

 public static void main (String[] args) {
	 System.out.printf("You rolled a ");
	 DiceRoller App = new DiceRoller( Integer.parseInt(args[0]) );
	 App.Roller();
 }
}

启动该应用程序并提供您希望骰子拥有的面数

$ java dice.java 20
    You rolled a 10
    $ java dice.java 6
    You rolled a 2
    $ java dice.java 100
    You rolled a 44

构造函数已接受您的输入,因此在创建类实例时,将使用用户指定的任何数字设置 sides 变量。

构造函数是强大的编程组件。 练习使用它们来释放Java的全部潜力。

标签
Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。 他曾在电影和计算行业工作,通常同时进行。

8 条评论

这是一篇关于java的好文章。 我从这篇文章中学到了java构造函数。 我学习了如何在java语言中使用java构造函数。

感谢您的阅读! 我很高兴它能帮助您更多地了解Java。

回复 ashleykoree 的好文章

最后,我知道了开源(免费下载)和付费版本之间的区别。
非常感谢你

Leem

太好了! 我很高兴听到您从一篇关于java构造函数的文章中提取了这些信息。 感谢您的阅读!

回复 Leem

++ Seth。 很棒的文章!

感谢您阅读本文! 我认为解释编程的奇怪小细节很重要。 作为一名自学成才的程序员,我可以证明这些是人们不知道自己不知道的东西。 这些总是最难学习的。

回复 by akritiko

我对这篇文章印象深刻。

关于java构造函数的优秀文章。

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© 2025 open-source.net.cn. All rights reserved.