super:可用来修饰属性、方法、构造器。
1)当之类与父类中有同名属性时,可以通过"super.此属性"显示的调用父类中声明的属性。若想调用子类的同名属性可以使用:this.同名属性。
2)当子类重写父类的方法后,在子类中若想再显示的调用父类的被重写的方法,就需要用"super.方法"。
3)super修饰构造器:通过在子类中使用super(形参列表)来显示的的调用父类中指定的构造器。
>在构造器内部,super(形参列表)必须声明在首行!
>在构造器内部,this(形参列表)与super(形参列表)只能出现一个!
>在构造器中,如果不显示的调用this(形参列表)与super(形参列表)时,默认的调用父类的空参构造器即:super();
4)建议:在设计一个类时:尽量提供一个空参的构造器!
class Creature { public Creature() { // 无参构造器 System.out.println("Create Constructor with no arguments"); } } class Animal extends Creature { public Animal(String name) { // 如果没写this()或者super()默认调用super()即public Creature() System.out.println("Animal带一个参数的构造器,该动物的名字为" + name); } public Animal(String name, int age) { this(name); System.out.println("Animal带两个参数的构造器,该动物的年龄为" + age); } } public class Wolf extends Animal { public Wolf() { super("灰太狼", 3); System.out.println("Wolf无参构造器"); } public static void main(String[] args) { new Wolf(); } }