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()方法 } }