继承中父类的有参构造方法怎么调用的问题
我们都知道在继承关系中,只要new 一个子类的对象,那么父类和子类的构造方法都会被调用,但这都是父类无参构造才行,如果父类是有参构造呢?
我试验了一下:父类构造方法有参数必须要子类的构造方法通过super关键字赋值,不然要报错,而子类是不是有参或者无参构造都无所谓:
代码如下:
1 public class Fu { 2 public Fu(String name){ 3 System.out.println(name); 4 } 5 } 6 7 public class Zi extends Fu { 8 public Zi() { 9 super("anc");//如果要赋值必须通过super关键字赋值 10 } 11 } 12 13 public class ExtendsTest { 14 public static void main(String[] args) { 15 Zi zi = new Zi(); 16 } 17 }
在简述一下父类和子类成员变量和成员方法重名的问题:
成员变量重名:
1 public void show1(){ 2 System.out.println(this.age);//this关键字调用本类中的成员变量 3 System.out.println(super.age);//super关键字调用父类中的成员变量 4 }
//同样也可以用this和super关键字分别调用本类和父类的方法
成员方法重名:
1 public void show(){ 2 System.out.println("父类的方法"); 3 } 4 5 public void show(){ 6 super.show();//子类重写父类的方法,通过super关键字调用 7 System.out.println("子类的方法"); 8 }