java构造器
转自:https://www.runoob.com/java/java-inheritance.html
子类是不继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显式)。
如果父类的构造器带有参数,则必须在子类的构造器中显式地通过 super 关键字调用父类的构造器并配以适当的参数列表。
如果父类构造器没有参数,则在子类的构造器中不需要使用 super 关键字调用父类构造器,系统会自动调用父类的无参构造器。
1 package 构造器; 2 class SuperClass{ 3 private int n; 4 SuperClass(){ 5 System.out.println("SuperClass()"); 6 } 7 SuperClass(int n){ 8 this.n = n; 9 System.out.println("SuperClass(int n):"+n); 10 11 } 12 } 13 class SubClass extends SuperClass{ 14 private int n; 15 SubClass(){ 16 System.out.println("SubClass()"); 17 } 18 SubClass(int n){ 19 super(300); 20 System.out.println("SubClass(int n):"+n); 21 this.n = n; 22 } 23 } 24 class SubClass2 extends SuperClass{ 25 private int n; 26 SubClass2(){ 27 super(400); 28 System.out.println("SubClass2()"); 29 } 30 SubClass2(int n){ 31 System.out.println("SubClass2(int n):"+n); 32 this.n = n; 33 } 34 } 35 public class TestSuperSubclass { 36 public static void main(String[] args) { 37 System.out.println("------SubClass继承------"); 38 new SubClass(); 39 System.out.println("-----------------------"); 40 new SubClass(100); 41 System.out.println("------SubClass2继承------"); 42 new SubClass2(); 43 System.out.println("-----------------------"); 44 new SubClass2(100); 45 } 46 }
运行结果:
------SubClass继承------ SuperClass() SubClass() ----------------------- SuperClass(int n):300 SubClass(int n):100 ------SubClass2继承------ SuperClass(int n):400 SubClass2() ----------------------- SuperClass() SubClass2(int n):100