繁体   English   中英

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

[英]Why do I get an error when I try to call a subclass method inside a baseclass method?

这是我的代码:

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 不会,那么为什么我不能调用子类方法? 非常感谢

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

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

继续编码:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM