登陆

什么是 Java 结构器?

admin 2020-02-14 218人围观 ,发现0个评论

结构器是编程的强壮组件。运用它们来开释 Java 的悉数潜力。

-- Seth Kenlon(作者)

在开源、跨渠道编程范畴,Java 无疑(?)是无可争议的重量级言语。虽然有许多 巨大的跨渠道 结构 ,但很少有像 Java 那样统一和直接的。

当然,Java 也是一种十分杂乱的言语,具有自己的奇妙之处和常规。Java 中与 结构器( constructor)有关的最常见问题之一是:它们是什么,它什么是 Java 结构器?们的效果是什么?

简而言之:结构器是在 Java 中创立新 目标(object)时履行的操作。当 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 R什么是 Java 结构器?andom rand = new Random();

接下来,在 DiceRoller 类中创立一个函数,以履行计算机模仿模子翻滚所有必要采纳的过程:从 rand 中获取一个整数并将其分配给 roll变量,考虑到 Java 从 0 开端计数但 20 面的骰子没有 0 值的状况,roll 再加 1 ,然后打印成果。

import java.util.Random;
public class DiceRoller {
private int dice = 20;
private int roll什么是 Java 结构器?;
private Random rand = new Random();

最终,发生 DiceRoller 类的实例并调用其要害函数 Roller:

// main loop
p山丘ublic 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 应用程序,可是它有一点局限性。例如,假如你把游戏《龙与地下城》放在一边,晚上去玩一些《快艇骰子》,你将需求六面骰子。在这个简略的比如中,更改代码不会有太多的费事,可是在杂乱的代码中这不是一个实际的挑选。处理这个问题的一种办法是运用结构器。

结构函数的效果

这个示例项目中的 DiceRoller 类表明一个虚拟骰子工厂:当它被调用时,它创立一个虚拟骰子,然后进行“翻滚”。但是,经过编写一个自定义结构器,你能够让掷骰子的应用程序问询你期望模仿哪种类型的骰子。

大部分代码都是相同的,除了结构器承受一个表明面数的数字参数。这个数字还不存在,但稍后将创立它。

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 什么是 Java 结构器?20
You rolled a 10
$ java dice.java 6
You rolled a 2
$ java dice.java 100
You rolled a 44

结构器已承受你的输入,因此在创立类实例时,会将 sides 变量设置为用户指定的任何数字。

结构器是编程的功用强壮的组件。操练用它们来解开了 Java 的悉数潜力。


via: https://opensource.com/article/19/6/wha什么是 Java 结构器?t-java-constructor

作者: Seth Kenlon 选题: lujun9972 译者: laingke 校正: wxy

本文由 LCTT 原创编译, Linux我国 荣誉推出

点击“了解更多”可拜访文内链接

请关注微信公众号
微信二维码
不容错过
Powered By Z-BlogPHP