有些东西虽然简单,但是也稍微整理以便记忆。
关于类的继承与构造方法的调用。
当subclass的构造方法没有显式的调用supclass的某个构造方法时,就会隐式的调用supclass的无参构造方法,
当显式的调用了supclass的某个构造方法时就不再隐式的调用supclass的无参方法。
然而如果此时supclass没有显式的无惨构造方法:
1. 如果supclass有其他构造方法(也就是包含参数的构造方法),subclass便会出现编译错。
package inheritance;
public class Superclass {
// public Superclass() {
// System.out.println("Super: No parameter.");
// }
public Superclass(int i) {
System.out.println("Super: " + i);
}
public static void main(String[] args) {
Subclass s = new Subclass(5);
}
}
class Subclass extends Superclass {
public Subclass(int i) { // compiling error.
System.out.println("Sub: " + i);
}
}
2.如果没有其他构造方法(也就是supclass没有显式的构造方法)此时subclass会隐式的调用supclass的默认构造方法,也就是无参构造函数。
package inheritance;
public class Superclass extends SuperSupClass{
// public Superclass() {
// System.out.println("Super: No parameter.");
// }
// public Superclass(int i) {
// System.out.println("Super: " + i);
// }
public static void main(String[] args) {
Subclass s = new Subclass(5);
}
}
class Subclass extends Superclass {
public Subclass(int i) {
System.out.println("Sub: " + i);
}
}
class SuperSupClass{
public SuperSupClass(){
System.out.println("Super Super Class .");
}
}
此时运行main方法将得到结果:
Super Super Class .
Sub: 5