sub class must call base class's constructor
sub class will invoke base class's constructor implicityly
if super constructor is undefined, must explicitly invoke another constructor
子类以一定要调用到父类方法。
子类可以隐式的调用父类默认的构造方法。
如果父类没有默认构造方法,必须显示调用。
Constructor call must be the first statement in the constructor
super() or this(...)
super和this要在第一个statement,不能被同时调用
default constructor is equivalent to the following code
public ASubClass(){
super();
}
默认构造函数会调用父类构造方法
if no constructor defined, compiler will create a default one
如果没有默认构造函数,compiler会帮忙生成一个
转载个例子:
class A{
public A(){} // 1:无参数构造方法。
public A(String s){} // 2.
}
class B extends A{
public B(String s){
super(s); // 3.
}
}
记住一点:在构造子类时,一定会调用到父类的构造方法。因为父类中的元素也需要被初始化。
所以父类要么有一个默认的无参数构造,这样Java会自动调用这个无参数的构造。如果父类没有无参数的构造,那么就要你自己在子类的构造中,通过super()的方式调用父类的构造。
sub class will invoke base class's constructor implicityly
if super constructor is undefined, must explicitly invoke another constructor
子类以一定要调用到父类方法。
子类可以隐式的调用父类默认的构造方法。
如果父类没有默认构造方法,必须显示调用。
Constructor call must be the first statement in the constructor
super() or this(...)
super和this要在第一个statement,不能被同时调用
default constructor is equivalent to the following code
public ASubClass(){
super();
}
默认构造函数会调用父类构造方法
if no constructor defined, compiler will create a default one
如果没有默认构造函数,compiler会帮忙生成一个
转载个例子:
class A{
public A(){} // 1:无参数构造方法。
public A(String s){} // 2.
}
class B extends A{
public B(String s){
super(s); // 3.
}
}
记住一点:在构造子类时,一定会调用到父类的构造方法。因为父类中的元素也需要被初始化。
所以父类要么有一个默认的无参数构造,这样Java会自动调用这个无参数的构造。如果父类没有无参数的构造,那么就要你自己在子类的构造中,通过super()的方式调用父类的构造。