Java多态: Why is an error returned?

标签 java polymorphism

为什么运行

Larry var3 = new Jerry();
var3.method3();

输出错误而不是

larry 1

harry 1

mary 3

我认为这可能与对象的创建方式有关。但这只是我的猜测。

这是代码:

public class Harry {
    public void method1() {
        System.out.println("harry 1");
    }

    public void method2() {
        method1();
        System.out.println("harry 2");
    }
}

public class Larry extends Harry {
    public void method1() {
        System.out.println("larry 1");
        super.method1();
    }
}

public class Mary extends Larry {
    public void method2() {
        System.out.println("mary 2");
    }

    public void method3() {
        super.method1();
        System.out.println("mary 3");
    }
}

public class Jerry extends Mary {
    public void method2() {
        super.method2();
        System.out.println("jerry 2");
    }
}

最佳答案

使用

((Mary) var3).method3();

它会工作得很好。

关于Java多态: Why is an error returned?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50223839/

相关文章:

java - 二维数组的快速散列

java - 关于为什么 'Anemic Domain Model' 被视为反模式的具体示例

c++ - 虚拟类和多态性

class - 参数化类和多态性

c++ - 为什么编译器会提示我的 dynamic_cast?

c# - 存储派生对象的泛型类列表

java - 启动tomcat时出现UnsatisfiedLinkError

java - 该定价表应该使用什么数据结构

java - 将所选文件调整为 JFileChooser 中的 FileFilter

c++ - 通过组合添加类功能