Java 通过重写实现重载
为什么即使将整型参数传递给方法“p”,这里也不会发生重载Java 通过重写实现重载,java,Java,为什么即使将整型参数传递给方法“p”,这里也不会发生重载 由于变量a被声明为B,因此只有B中声明的p方法可见并被选择。没有压倒一切的因素 如有疑问,请在您喜爱的IDE中使用@Override注释您的方法。如果IDE没有覆盖任何内容,它就不会让它编译 编辑后,现在有一个覆盖的方法,形式为A#p(double)。当你调用 a.p(10); a.p(10.0); 将调用B类上可见的方法p。通过多态性,并且由于变量a是运行时类型a,因此将调用a中声明的重写方法 请注意,中的int参数 a.p(10
由于变量
a
被声明为B
,因此只有B
中声明的p
方法可见并被选择。没有压倒一切的因素
如有疑问,请在您喜爱的IDE中使用@Override
注释您的方法。如果IDE没有覆盖任何内容,它就不会让它编译
编辑后,现在有一个覆盖的方法,形式为
A#p(double)
。当你调用
a.p(10);
a.p(10.0);
将调用B
类上可见的方法p
。通过多态性,并且由于变量a
是运行时类型a
,因此将调用a
中声明的重写方法
请注意,中的
int
参数
a.p(10);
通过.变成
双精度
,因为您是通过对a-B的引用调用事物的。它只有一个方法。它总是在B
中调用该方法,因为:
- 变量的类型为
B
,因此编译器只知道double
方法
A
中的方法不会覆盖B
的方法,因为参数类型int
不同于B
的double
——它对调用代码不可见
让A
extendB
非常混乱。几乎世界上每一个重写示例都使A
成为父类。那么对象A在这里有什么用途呢?当特定于对象(此处为“A”)的方法执行时?@user3126466:在这种情况下,没有任何用处。您的示例中没有重写的方法。现在我在类A中编辑并添加了重写的方法。因此这里缺少重载。。
a.p(10);