考虑以下场景:我有两个接口A
和B
。两个接口都具有成员函数display()
。
public interface A {
public function display() {
}
}
public interface B {
public function display() {
}
}
class C implement A, B {
public function display{
//definition here
}
}
我只是想知道
display()
中有多少C
个功能?答案 0 :(得分:3)
一个精彩的解释是:Implementing two interfaces in a class with same method. Which interface method is overridden?
如果一个类型实现了两个接口,并且每个接口定义了一个具有相同签名的方法,那么实际上只有一个方法,并且它们是不可区分的。例如,如果两种方法具有冲突的返回类型,那么它将是编译错误。这是继承,方法重写,隐藏和声明的一般规则,并且还适用于不仅可能在2个继承的接口方法之间发生冲突,还可以应用于接口和超类方法之间的冲突,甚至只是由于泛型的类型擦除引起的冲突
答案 1 :(得分:1)
C类中有多少个display()函数?
只有一个
如果有一个成员函数,怎么可能?
因为它们具有相同的签名
但是这在java中是禁止的,不可能使用相同的名称和不同的类型,你可以在这里了解更多Java - Method name collision in interface implementation