【发布时间】:2012-03-22 03:48:30
【问题描述】:
interface A { public void m1(); }
**//Gives error**
class D implements A { public void m1(int x) { } }
**//this doen't**
abstract class G implements A { public void m1(int x) { } }
我怀疑为什么抽象类能够覆盖而 D 类不能
如果我看到第二种情况
class X1
{
public void f2(){}
}
class X2 extends X1
{**//No error**
public void f2(int x){}
}
为什么 public void m1() 在类 D 中没有被覆盖,而相同类型的方法 f2() 在类 X2 中被覆盖 在这两种情况下,我们都在覆盖,但为什么在接口情况下类 D 不能,而在第二种情况下,类 X2 可以覆盖。
【问题讨论】:
-
接口和类中
m1的签名不匹配! -
这是两种不同的情况,我在问为什么 public void m1() 没有在 D 类中被覆盖,而相同类型的方法 f2() 在 X2 类中被覆盖
-
抽象类不需要实现接口的方法-stackoverflow.com/questions/197893/…
-
我猜你打错了。在您的
D和G类中,您必须覆盖public void m1(),而不是public void m1(int x)(注意参数)。因为否则,它不是压倒一切的。这是一种完全不同的方法!
标签: java