JAVA的接口是允许多继承的, 这就牵扯到类似C++里多继承的菱形问题, 实际编写代码发现编译器并没有阻止此类行为, 并没有报错 我猜测是因为接口只是一个纯概念化的东西, 并没有具体实现代码, 无论有无接口冲突, 具体代码仅有一份, 也就不会有调用冲突. 但我们还是要尽量避免此类问题发生. 实际测试代码如下:
package com.cnsuning.inter;
public interface Flyable {
void fly();
void show();
}
package com.cnsuning.inter;
public interface Runable {
public void run();
void show();
}
package com.cnsuning.animals;
import com.cnsuning.inter.CanFlyAndRun;
public class Duck implements CanFlyAndRun{
public Duck() {
}
public static void main(String[] args) {
Duck d = new Duck();
d.fly();
d.run();
d.show();
}
@Override
public void fly() {
System.out.println("Duck can fly");
}
@Override
public void run() {
System.out.println("Duck can run");
}
@Override
public void show() {
// TODO Auto-generated method stub
System.out.println("Duck show");
}
}
Duck can flyDuck can runDuck show