你可以同时使用默认和参数构造函数吗?

时间:2017-03-13 06:21:49

标签: java arrays eclipse class

我被指派使用默认和参数构造函数创建一个类,但问题是,甚至可能吗?我不知道它是如何工作的......两者都应该为变量赋值

3 个答案:

答案 0 :(得分:1)

当你在类中定义另一个构造函数时,你不再得到“通常的”默认构造函数(public和without arguments)。

但是,您可以将其添加回来:

class MyClass{
   MyClass(String param){}  // custom constructor
   MyClass(){}              // bring back the non-arg one
}

当然,使用new创建对象实例时,您必须选择要调用的对象实例(不能同时使用两者):

 MyClass instanceA = new MyClass("a string");
 MyClass instanceB = new MyClass();

构造函数可以相互调用(使用this(parameters))或共享方法,如果它们中存在您希望保留在一个位置的常用功能。

答案 1 :(得分:1)

借用@bohemian的答案

public class Person
    ...
    public Person() { 
        this("unknown", 0); // you can call another constructor 
    }

    public Person(String nm, int ag) {
        name = nm;  
        age = ag;
    }
    ...
}

在此示例中,如果调用no-args构造函数,则unknown0将传递给其他构造函数

答案 2 :(得分:1)

实际上,根据定义,你不能在Java中这样做.JLS§8.8.9,http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.8.9说,“如果一个类不包含构造函数声明,那么隐式声明默认构造函数。”因此,只要添加任何构造函数声明,即使是无参数构造函数,也不会获得默认构造函数。