前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么是Java构造函数?【Programming】

什么是Java构造函数?【Programming】

作者头像
Potato
修改2019-11-25 15:13:04
7040
修改2019-11-25 15:13:04
举报
文章被收录于专栏:Opensource翻译专栏

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

图片来源:Opensource.com
图片来源:Opensource.com

在开放源代码,跨平台编程中,Java是(无可争议的)重量级人物。 尽管有许多出色的 跨平台 框架 ,但很少有像Java这样统一和直接的框架 。

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

简而言之:构造函数是在Java中创建新对象时执行的动作。 当Java应用程序创建您编写的类的实例时,它将检查构造函数。 如果存在构造函数,则Java在创建实例时在构造函数中运行代码。 很多技术术语都塞进了几句话,但是当您实际使用它时,它会变得更加清晰,所以请确保你已经安装了 Java 并准备好进行演示。

没有构造函数的例子

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

假设您要编写一个简单的Java掷骰子应用程序来生成一个伪随机数。

首先,您可以创建骰子类来表示物理骰子。 假设你玩了很多《龙与地下城》,决定创建一个20面骰子。 在这个示例代码中,可变骰子是整数20,表示最大可能的骰子掷骰(一个20面的骰子掷骰子不能超过20)。 变量 roll 是一个占位符,表示最终将是一个随机数,rand 则充当随机种子。

代码语言:javascript
复制
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:

代码语言:javascript
复制
 // main loop
  public static void main (String[] args) {
  System.out.printf("You rolled a ");
 
          DiceRoller App = new DiceRoller();
          App.Roller();
  }
 }

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

代码语言:javascript
复制
$ java dice.java
    You rolled a 12

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

正在运行的构造函数

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

大多数代码都是相同的,只是构造函数接受了sides。 这个数字现在还不存在,但是以后会创建出来。

代码语言:javascript
复制
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; 
  }

模拟滚动的功能保持不变:

代码语言:javascript
复制
public void Roller() {
         roll = rand.nextInt(dice);
         roll += 1;
  System.out.println (roll);
 }

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

代码语言:javascript
复制
 public static void main (String[] args) {
  System.out.printf("You rolled a ");
          DiceRoller App = new DiceRoller( Integer.parseInt(args[0]) );
          App.Roller();
  }
 }

启动应用程序并提供您希望您的骰子具有的边数:

代码语言:javascript
复制
$ 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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 没有构造函数的例子
  • 正在运行的构造函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档