我在接口方面遇到了一些有趣的问题,请帮助我理解这个概念。
我有三个接口Itest,Itest3,Itest4。Interface Itest扩展了Itest3和Itest4接口。这两个接口都有一个共同的方法public void one();,现在是一个类测试,实现了Itest接口并覆盖了方法one()
现在它继承了哪个接口的方法?如果我想继承特定接口的公共方法怎么办。它对多态有什么影响?如果另一个类只继承Itest3,该怎么办?我认为这会在运行时中断。
请告诉我这样做的好处是什么?
代码在这里...
public interface ITest extends Itest4,Itest3 {
public static interface ITest2{
}
}
public interface Itest3 {
public void one();
}
public interface Itest4 {
public void one();
}
public class Test implements ITest {
@Override
public void one() {
//Which interface method it overrides?
}
public static void main(String... arg) {
new Test();
}
}发布于 2012-12-19 21:14:19
答案是:无关紧要。
接口只是声明,而不是代码。两个接口都声明了一个方法public void one()。当您有一个实现此方法的实现类时,它会同时为两个接口实现此方法。这个在class Test中的实现没有覆盖任何东西。这是第一个实现。接口中没有它可以覆盖的实现--只有两个完全相同的声明。
当另一个类实现ITest3时,它将需要自己的public void one()实现。就像任何其他实现ITest4或ITest的类一样。唯一不需要自己实现的情况是,当你有一个扩展Test类的类时,因为它可以继承Test的实现。
发布于 2012-12-19 21:30:44
该声明
public interface Itest3 {
public void one();
}简单地说,Itest3的任何实现者都将提供一个名为one的方法,该方法不接受任何参数,并返回空。
以完全相同的方式
该声明
public interface Itest4 {
public void one();
}还声明Itest4的任何实现者都将提供一个名为one的方法,该方法不接受任何参数,并返回空。
接口的存在只是为了指定行为契约,而与所述行为的实现无关。因此,
public class Test implements ITest {
@Override
public void one() {
//Defines the behavior of both interfaces
}
}定义一个实现这两个接口的类。这是因为方法实现满足两个接口的要求。
https://stackoverflow.com/questions/13953148
复制相似问题