Super关键字
基本介绍
super是对父类的引用 用于访问父类的构造器 属性 方法
基本使用语法
访问属性 但不能直接访问私有属性 super.属性名
访问方法 但不能直接访问私有方法 super.方法
访问构造器 但只能在子类构造器中访问 且只能放在第一句 super(参数) 子类构造器中this和super不能同时出现
细节1:
访问分两情况:
*当访问的方法和属性与子类中没有重复时 可以选择3种方式进行访问
直接输入方法名(属性名)
this.方法名(属性名)
super.方法名(属性名)
public class Father{
public void prints(){
Ssytem.out.println("父类方法被调用");
}
}
public class Son extends Father{
//prints(); //方法1与2 都是在子类中调用父类方法 前提是没有重复名的方法 如果有重复 就是调用子类的方法 跟继承的思路一
//this.prints(); //一直往上找 直到找到一个可以运行的为止 注意 不能直接访问私有 要通过父类公开的方法
super.prints(); //super方法则直接找父类 不会在子类中查找 减少了一个过程 如果父类找不到 就找object类 然后找不到系统报错
}
*当访问的方法和属性与子类中重复时 只能选择super关键字查找 不然会调用到子类 跟继承中的调用规则一样
public class Father{
public void prints(){
Ssytem.out.println("父类方法被调用");
}
}
public class Son extends Father{
//prints();
//this.prints(); //super方法则直接找父类 不会在子类中查找
super.prints();
}
细节2:
*super的访问不局限于父类(爷爷类…祖宗类 就是父类的父类的父类…) 同时访问遵循就近原则
如果子类访问的在父类中找不到 那么就访问爷爷类 (父类的父类)。。。。。以此类推
遵循就近原则 如果父类和爷爷类同时有被子类访问的属性 那么肯定先访问父类 如果父类是私有就访问爷爷类 直到访问成功