2013-11-22 38 views
0

我正在阅读我的编程文本,我有我认为的关于构造函数的非常合理的问题。构造函数以及如何利用它们

例如,如果我的代码:

public class Ship{ 
    String name; 
    int position; 

    public Ship(int position){ 
     this.position = position; 
    } 
    public Ship(String name){ 
     this.name = name; 
    } 
    public Ship(){ 
     name = "Titanic"; 
     position = 0; 
    } 
} 

所以,如果我有我的行话纠正Ship()是默认的构造函数。而带参数的构造函数是初始化构造函数。

现在,这是背景......这是我的问题!当我使用其中一个包含参数的构造函数时,正在使用的字段会发生什么情况(在本例中是其他字段)。例如,当我拨打Ship(5)时,name数据字段的值是多少?它是否采用默认值或数据类型的默认值?

这是否意味着我必须为其他字段设置一个值,如果我调用这个单参数构造函数?

+3

为什么“默认构造函数”具有小写名称,为什么类外的构造函数? – Justin

+0

-1确保发布编译代码(除非问题是关于为什么代码不能编译)。 – user2864740

+0

我的歉意,我很快写了这个,只是为了更容易地解释这个问题=)。 – user2879101

回答

5

任何您未初始化的实例变量都由Java给出默认值。原始类型的值为0,引用类型为null

您不必初始化值,但为了清楚起见,最好明确地初始化所有值。

+0

因此,我想最好的做法是从get go中给出实例变量值...例如String name =“battleship”。如果是这种情况,默认构造函数将如何操作?它只是公共船(){没有代码块B/C默认值已被使用} – user2879101

3

该字段获取默认字段值:数字为0,对象为null。如果默认值不是你想要的,你必须在one-argument构造函数中设置另一个字段的值。

相关问题