有如下Java类:
public class Bird{
private String name;
public Bird() { }
public Bird(String name){ this.name = name; }
public void walk() { System.out.println(“走路”); }
public String getName(){ return name; }
public void setName(String name){ this.name = name; }
}
另有一个类Chicken继承上边的Bird类;
public class Chicken extends Bird{
private String crest;
public Chicken(){ super(); }
public Chicken(String name,String crest) {
super(name);
this.name = name; }
………….
}
在第二个自定义的类Chicken中,super()方法一共出现了两次,分别是super()和super(name),请问super() 是什么含义,放在这里又作何解释?
参考答案:
1.子类的构造过程中必须调用父类的构造方法
2.子类可在自己的构造方法中使用super()来调用父类的构造方法
(1)使用this来调用本类的另外的构造方法
(2)如果调用super必须写在子类构造方法的第一行
3.如果子类的构造方法中没有显示的调用父类的构造方法,则系统默认的调用父类的无参的构造方法。
4.如果子类的构造方法中既没有显示调用父类的构造方法,而父类中又没有无参的构造方法,则编译出错。
那你这里第一个super()无参的就是调用了上面Bird类的Bird() 方法!
super(name)这个有参数就是调用public Bird(String name){
this.name = name; 这个方法!super() 是调用父类的构造函数,你例子中有Bird()和Bird(String name)两个方法,super()是调用Bird()构造函数,而super(name)是调用Birth(String name)构造函数。注意super() 调用的是对应参数个数和类型相同的父类构造函数。 public Chicken(String name,String crest) { super(name); this.name = name; } 应该重复了吧,super(name)应该就是this.name = name。



