相关疑难解决方法(0)

如何使用默认(包)可见范围覆盖方法?

我的问题是我无法理解方法解析在以下情况下如何工作:假设,我们有两个包,AB.有两个类,A放在内A,BB.

A:

package com.eka.IO.a;
import com.eka.IO.b.B;

public class A {

    void foo() {
        System.out.println("parent");
    }

    public static void main(String... args) {
        B obj = new B();
        obj.foo();
    }

}
Run Code Online (Sandbox Code Playgroud)

B:

package com.eka.IO.b;
import com.eka.IO.a.A;

public class B extends A {

    public void foo() {
        System.out.println("child");
    }

}
Run Code Online (Sandbox Code Playgroud)

上面的代码打印"child",这是完全正常的.但是如果我按以下方式更改方法main:

public static void main(String... args) {
    A obj = new B();
    obj.foo();
}
Run Code Online (Sandbox Code Playgroud)

代码打印"父",我不明白为什么.(obj具有运行时类型B,B具有公共方法 …

java inheritance

14
推荐指数
2
解决办法
5270
查看次数

标签 统计

inheritance ×1

java ×1