构造函数是编程的强大组件。 使用它们来释放Java的全部潜力。
在开放源代码,跨平台编程中,Java是(无可争议的)重量级人物。 尽管有许多出色的 跨平台 框架 ,但很少有像Java这样统一和直接的框架 。
当然,Java还是一种非常复杂的语言,具有自己的微妙之处和约定。 关于Java的最常见问题之一是与构造函数有关 :它们是什么,它们的用途是什么?
简而言之:构造函数是在Java中创建新对象时执行的动作。 当Java应用程序创建您编写的类的实例时,它将检查构造函数。 如果存在构造函数,则Java在创建实例时在构造函数中运行代码。 很多技术术语都塞进了几句话,但是当您实际使用它时,它会变得更加清晰,所以请确保你已经安装了 Java 并准备好进行演示。
如果您正在编写Java代码,即使您可能不知道它,也已经在使用构造函数。 Java中的所有类都有一个构造函数,因为即使您没有创建一个构造函数,Java也会在编译代码时为您完成。 但是,为了演示起见,请忽略Java提供的隐藏构造函数(因为默认构造函数不会添加任何额外的功能),并在没有显式构造函数的情况下进行观察。
假设您要编写一个简单的Java掷骰子应用程序来生成一个伪随机数。
首先,您可以创建骰子类来表示物理骰子。 假设你玩了很多《龙与地下城》,决定创建一个20面骰子。 在这个示例代码中,可变骰子是整数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 中取一个整数并将其分配给骰子变量,加1以解释 Java 开始计数为0但20面骰子没有0值的事实,然后打印结果。
最后,生成一个 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应用程序询问希望模拟哪种类型的骰子。
大多数代码都是相同的,只是构造函数接受了sides。 这个数字现在还不存在,但是以后会创建出来。
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 的全部潜能。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。