小编Kay*_*y.Z的帖子

Java为什么upcasted对象会调用父类的方法实现?

我在处理 Java 类继承时遇到了一个问题,其中子类 C 有一个像其父类 A 一样的方法 fun() ,但签名不同。但是我不明白为什么在对象 x 上调用 fun() 时会调用父类的方法。我确实明白,因为签名不同,这并不完全是方法重写,但我仍然不明白为什么在这里调用 A 的 fun() 方法。

A级

class A{
    public void fun(double d){
        System.out.println("A");
    }
}
Run Code Online (Sandbox Code Playgroud)

C级

public class C extends A{
    public static void main(String[] args){
        A x = new C();
        x.fun(6); //prints "A"
    }
    public void fun(int i){
        System.out.println("C");
    }
}
Run Code Online (Sandbox Code Playgroud)

java inheritance overriding

0
推荐指数
1
解决办法
78
查看次数

标签 统计

inheritance ×1

java ×1

overriding ×1