Java中的构造函数(以掷骰子为例)

当我们定义类的时候,通常要定义构造函数来创建类,我们经常使用构造函数对每个对象的变量进行初始化。

以下为我的示例代码

/**
 * Created with IntelliJ IDEA.
 * Description: Hello,I would appreciate your comments~
 * User:Gremmie
 * Date: -03-17
 * Destination:这是一个掷色子的程序
 */
public class Die {
    private final int MAX = 6;
//  定义一个最大值
    private int faceValue;
//  显示在Die上的现在的值
//  这里要注意,我们并没有对faceValue进行初始化赋值。
    public Die(){
        faceValue = 1;
    }
//  显示一个在模具上的新的面值,并返回结果
//  这里就是我们提到的构造函数,作用是讲骰子的初始点值设置为1
    public int roll(){
        faceValue = (int)(Math.random()*MAX)+1;
//  这里就是随机一个【1,6】的数字,我们也可以用Random类来实现
        return faceValue;
    }
//  这里我们就是重置色子的面值
//  The face value is not modified if the specified value is not valid
//  如果指定的值无效,则不会修改面值
    public void setFaceValue(int value)
    {
        if(value > 0 &&value <= MAX){
            faceValue = value;
        }
//  这里的作用是讲骰子的点值设置为指定值
    }
    public int getFaceValue(){
        return faceValue;
//  返回当前骰子面值
    }
    public String toString(){
        String result = Integer.toString(faceValue);
//  将骰子的值转化成字符串返回
        return result;
    }
}

以上代码为简单的一个掷骰(tou)子的程序,我们将骰子作为对象创建一个类,写出了很多方法,而我们在这里就有一个构造函数Die(),我们第一次见到他会奇怪它为什么可以和类一个名字,它为什么没有类型(甚至连void都没有)。

构造函数与常规方法有所不用,主要体现在以下两点:

1、构造函数与类名相同。如Die类的构造函数名是Die,Account类的构造函数名是Account.

2、构造函数不能返回任何值,不能指定void返回类型

重要概念:

构造函数没有指定任何返回类型,也不能返回void

通常,构造函数要对新的实例化对象进行初始化。例如,Die类的构造函数将die的初始点值设置为1.Coin类的构造函数调用flip方法是硬币处于初始随即状态。Account类的构造函数将实例变量的值设置为传递给它的参数。最初使用构造函数设置对象的方式是程序设计的重要决策。

常见错误:

程序员常常烦的错误是在构造函数中指定void返回类型。就编译器而言,在构造函数中指定返回类型(如void),就会将构造函数编程鱼类同名的常规方法。因此,调用时不是调用构造函数,而是调用常规方法,编译器会很难解码,会报错

 如果程序员没有为类提供构造函数,那么系统会自动创建和使用默认的没有参数的构造函数,默认构造函数对新创建的对象没有任何影响。如果程序员提供了构造函数,则系统不再定义默认的构造函数。

(悄咪咪说一句,其实我也有疑问,为什么既然构造函数是用来初始化的,那么为什么不直接在定义全局变量的时候直接进行初始化呢?)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gremmie2003

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值