当我们定义类的时候,通常要定义构造函数来创建类,我们经常使用构造函数对每个对象的变量进行初始化。
以下为我的示例代码
/**
* 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),就会将构造函数编程鱼类同名的常规方法。因此,调用时不是调用构造函数,而是调用常规方法,编译器会很难解码,会报错
如果程序员没有为类提供构造函数,那么系统会自动创建和使用默认的没有参数的构造函数,默认构造函数对新创建的对象没有任何影响。如果程序员提供了构造函数,则系统不再定义默认的构造函数。
(悄咪咪说一句,其实我也有疑问,为什么既然构造函数是用来初始化的,那么为什么不直接在定义全局变量的时候直接进行初始化呢?)