2016-06-29
实现继承
super();
在调用子类构造器时,如果没有显式写出super,那么编译器会默认加上super()无参构造器。
如果想调用父类有参构造器,那么必须显式调用,编译器不会默认加上的。
创建子类对象的过程,就是从底层基类开始往上,一层层地调用构造方法。
super() super(参数)都必须放在方法的第一个语句中。
package com.java1995; public class A { A(){ System.out.println("调用A的无参构造方法"); } A(int i){ System.out.println("调用A的有参构造方法"); } } class B extends A{ B(){ System.out.println("调用B的无参构造方法"); } B(int i){ /** * super()、super(参数)都必须放在方法的第1个语句中 * 显式调用、父类有参构造器 */ super(i); System.out.println("调用B的有参构造方法"); } } class C extends B{ C(){ /** * super(); * 在调用子类的构造器时, * 如果没有显式写出super(), * 编译器默认调用父类的无参构造器; * 如果想调用父类的有参构造器,必须显式调用。 */ super(); System.out.println("调用C的无参构造方法"); } C(int i){ /** * 显式调用、父类有参构造器 */ super(i); System.out.println("调用C的有参构造方法"); } }
package com.java1995; public class Test { public static void main(String[] args) { //C-->B-->A //C c=new C(); C c=new C(1); } }
【参考资料】
时间: 2024-10-08 12:06:03