什么是Java构造器?

开发 后端
构造器是在 Java 中创建新对象object时执行的操作。当 Java 应用程序创建一个你编写的类的实例时,它将检查构造器。如果(该类)存在构造器,则 Java 在创建实例时将运行构造器中的代码。

[[279795]]

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

在开源、跨平台编程领域,Java 无疑(?)是无可争议的重量级语言。尽管有许多伟大的跨平台框架,但很少有像 Java 那样统一和直接的。

当然,Java 也是一种非常复杂的语言,具有自己的微妙之处和惯例。Java 中与构造器 constructor有关的最常见问题之一是:它们是什么,它们的作用是什么?

简而言之:构造器是在 Java 中创建新对象object时执行的操作。当 Java 应用程序创建一个你编写的类的实例时,它将检查构造器。如果(该类)存在构造器,则 Java 在创建实例时将运行构造器中的代码。这几句话中包含了大量的技术术语,但是当你看到它的实际应用时就会更加清楚,所以请确保你已经安装了 Java 并准备好进行演示。

没有使用构造器的开发日常

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

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

首先,你可以创建骰子类来表示一个骰子。你玩了很久《龙与地下城》,所以你决定创建一个 20 面的骰子。在这个示例代码中,变量 dice 是整数 20,表示可能的最大掷骰数(一个 20 边骰子的掷骰数不能超过 20)。变量 roll 是最终的随机数的占位符,rand 用作随机数种子。

  1. import java.util.Random;
  2.  
  3. public class DiceRoller {
  4. private int dice = 20;
  5. private int roll;
  6. private Random rand = new Random();

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

  1. import java.util.Random;
  2.  
  3. public class DiceRoller {
  4. private int dice = 20;
  5. private int roll;
  6. private Random rand = new Random();

最后,产生 DiceRoller 类的实例并调用其关键函数 Roller

  1. // main loop
  2. public static void main (String[] args) {
  3. System.out.printf("You rolled a ");
  4.  
  5. DiceRoller App = new DiceRoller();
  6. App.Roller();
  7. }
  8. }

只要你安装了 Java 开发环境(如 OpenJDK),你就可以在终端上运行你的应用程序:

  1. $ java dice.java
  2. You rolled a 12

在本例中,没有显式构造器。这是一个非常有效和合法的 Java 应用程序,但是它有一点局限性。例如,如果你把游戏《龙与地下城》放在一边,晚上去玩一些《快艇骰子》,你将需要六面骰子。在这个简单的例子中,更改代码不会有太多的麻烦,但是在复杂的代码中这不是一个现实的选择。解决这个问题的一种方法是使用构造器。

构造函数的作用

这个示例项目中的 DiceRoller 类表示一个虚拟骰子工厂:当它被调用时,它创建一个虚拟骰子,然后进行“滚动”。然而,通过编写一个自定义构造器,你可以让掷骰子的应用程序询问你希望模拟哪种类型的骰子。

大部分代码都是一样的,除了构造器接受一个表示面数的数字参数。这个数字还不存在,但稍后将创建它。

  1. import java.util.Random;
  2.  
  3. public class DiceRoller {
  4. private int dice;
  5. private int roll;
  6. private Random rand = new Random();
  7.  
  8. // constructor
  9. public DiceRoller(int sides) {
  10. dice = sides;
  11. }

模拟滚动的函数保持不变:

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

代码的主要部分提供运行应用程序时提供的任何参数。这的确会是一个复杂的应用程序,你需要仔细解析参数并检查意外结果,但对于这个例子,唯一的预防措施是将参数字符串转换成整数类型。

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

启动这个应用程序,并提供你希望骰子具有的面数:

  1. $ java dice.java 20
  2. You rolled a 10
  3. $ java dice.java 6
  4. You rolled a 2
  5. $ java dice.java 100
  6. You rolled a 44

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

构造器是编程的功能强大的组件。练习用它们来解开了 Java 的全部潜力。 

责任编辑:庞桂玉 来源: Linux中国
相关推荐

2009-07-21 12:35:00

Scala从构造器

2010-08-26 09:27:53

DHCP服务器

2023-12-06 12:11:43

类加载器双亲委派模型

2021-05-27 10:12:11

Java无服务器化开发

2021-08-19 09:59:07

Spring代码Java

2011-08-08 14:28:49

dhcp服务器

2024-04-29 10:56:26

数据中心服务器服务器机房

2023-08-25 15:39:34

物联网传感器

2009-03-23 08:52:51

2010-07-29 11:18:22

2021-04-14 14:55:08

智能传感器物联网新技术

2009-09-24 10:23:41

打印服务器

2020-12-07 08:00:00

服务器Hypervisor数据中心

2023-09-20 14:35:43

2010-02-01 13:55:12

Python 解释器

2024-02-23 19:17:12

构造函数C++开发

2009-07-17 17:41:41

SwingWorker

2012-05-16 13:45:24

Java构造器

2012-02-27 14:09:00

Java

2021-03-20 22:46:22

IaaSSaaSPaaS
点赞
收藏

51CTO技术栈公众号