public class SuperDetail {
public static void main(String[] args) {
Sun sun = new Sun();
sun.sum();
}
}
class Farther{ // 父类
public void cal(){
System.out.println("父类的cal()方法");
}
public void hi(){
System.out.println("父类的hi()方法");
}
}
class Sun extends Farther{ // 子类继承父类
public void hi(){
System.out.println("子类的hi()方法");
}
public void sum(){
在子类中调用父类的方法,有三种形式
第一种方式:直接cal()调用,因为子类中没有cal()方法,因此在继承中
这样的语法,查找顺序是:
1. 先查找本类,有且可以访问,则调用
2. 本类没有,则继续向上查找,直到Object
3. 同样, 若遇到有但是无法访问,则不会再向上查找,而是报错
cal(); // 子类没有,找到父类的, 输出 父类的cal()方法
// 验证它是先查找本类的,我们在子类和父类中都添加一个 hi 方法
hi(); // 子类有,找到子类的, 输出 子类的hi()方法
第二种方式 this.方法名(), 这种方法与第一种的查找方式相同
this.cal(); // 子类没有,找到父类的, 输出 父类的cal()方法
this.hi(); // 子类有,找到子类的, 输出 子类的hi()方法
第三种方法, super.方法名(), 会直接跳过子类的查找,从父类开始,直到Object
super.cal(); // 找到父类的, 输出 父类的cal()方法
super.hi(); // 跳过子类,找到父类的, 输出 父类的hi()方法
}
}
