首页 > 解决方案 > 当我尝试在基类方法中调用子类方法时,为什么会出现错误?

问题描述

这是我的代码:

public class Main {
    public static void main(String args[]) {
        
        A a = new A();
        a.baseMethod();
        
    }
}

class B{
    
    public void baseMethod(){
        System.out.println("B");
        this.subMethod();   
    }
    

    
}

class A extends B{
    
    public void subMethod(){
        System.out.println("A");
    }

}

/MyClass.java:14: 错误:找不到符号 this.subMethod();
^ 符号:方法 subMethod() 1 错误

我认为“this”指的是对象“a”,如果我把它放在 main 中它可以工作,并且类 Main 不会看到类 A,因为类 B 没有,那么为什么我不能调用子类方法呢?非常感谢

标签: java

解决方案


实际上,在这种情况下,超类(A 类)可以访问驻留在基类(B 类)中的方法,但基类不能。如果你想通过调用超类(A类)的对象来访问基类(B类)方法,你可以。但是,如果您想通过调用基类的对象来访问超类(A 类)方法,则应该在超类中实现相同的方法签名。 “this”关键字表示调用它的相同对象引用(在您的情况下为 B 类对象)。

在两个类中具有相同签名的方法 (baseMethod) 后,您可以通过A a = new A();和对其进行测试A b = new B();

继续编码:)


推荐阅读