1.super:在子类中调用父类被覆盖的方法
this:当前对象。
super:子类的父类对象。
package HelloWorld;
class Bird{
public void fly() {
System.out.println("飞");
}
}
class Penguin extends Bird{
public void fly() {
System.out.println("不会飞");
super.fly();
}
}
public class SuperDome {
public static void main(String[] args) {
Penguin p=new Penguin();
p.fly();
}
}
2.子类的初始化过程
创建子类对象之前会,先创建创建父类
调用子类构造器之前,会 先调用父类的构造器,默认调用的是父类无参构造器
(1)如果父类不存在可以被访问的构造器,则不存在子类
(2)如果父类不存在无参构造器,子类必须显式调用(super)父类带参数的构造器
3.super的使用场景
(1)子类隐藏了父类的字段..不讨论破坏封装
(2)调用父类被覆盖的方法
(3)调用带参数的父类构造器
4.隐藏
(1)静态方法被继承(称为隐藏不叫覆盖)
(2)局部变量与成员变量重名 使用this代替
static 与super与this不能共存。