首页 > 解决方案 > Java 多态性:为什么会返回错误?

问题描述

为什么会跑步

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

输出错误而不是

拉里 1

哈利 1

玛丽 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");
    }
}

标签: javapolymorphism

解决方案


利用

((Mary) var3).method3();

它会正常工作。


推荐阅读