super关键字
super和this的使用可以对比学习;
this:
只能出现在构造方法和实例方法中。
其语法为this. 和 this()
this不能使用在静态方法中。
this.大部分情况可以省略。
this.在区分实例变量和局部变量的时候不能省略。
this()在代码复用中只能出现在构造方法的第一行,通过当前的构造方法去调用本类中的其他构造方法。
super:
只能出现在构造方法和实例方法中。
其语法为super. 和 super()
super不能使用在静态方法中。
super.大部分情况可以省略。
super的省略:父类中有的变量,子中也有,且在子中访问父的和子中同名的变量,那么必须加super。
super()在代码复用中只能出现在构造方法的第一行,通过当前的构造方法去调用本类中的其他构造方法。 目的:创建子类对象的时候,先初始化父类特征。
super() 表示通过子类的构造方法调用父类的构造方法。
模拟现实世界,要想有儿子,需要现有父亲。
重要结论:当一个构造方法的第一行,既没有this()又没有super()的话,默认会有一个super();且两者不能共存
表示通过当前子类的构造方法调用父类的无参数构造方法。因此必须保证父类的无参数构造方法是存在的。
只要存在继承,父类的构造方法是肯定会执行的。
什么时候使用super()
作用:初始化当前对象的父类型特征。
super关键字代表当前对象的那部分父类型特征。
注:java中允许出现父类和子类同名的变量
有关super的结论:
super不是引用,super也不保存内存地址。super也不指向任何对象。
super只是代表当前对象内部的那一块父类型的特征。
super的用法总结:
super.属性名 访问父类的属性
super.方法名(实参) 访问父类的方法
super(实参)子类构造方法中调用父类的构造方法。