java单继承多实现问题
为什么java类不支持多继承(接口支持):
(1)子类继承父类中有多个相同的成员变量,子类在使用的时候不知道调用父类的哪一个成员变量。
(2)子类继承父类中有多个相同的方法,若子类未覆盖父类方法,在子类调用时不知道调用父类的哪一个方法。
如果一个类实现了多个接口就没有这样的问题了吗?
在java8之前的定义:
(1)接口定义的变量都是常量,编译时就确定调用关系。
(2)方法调用时始终调用实现类的方法,不存在歧义。
不过,java8之后接口可以有默认方法,一个类实现多个接口有相同的默认方法咋办嘞,只能要求子类做出选择(重写该方法)。
必须实现m2方法,不然会报错。
interface C extends A,B{
@Override
default void m2() {
}
public interface A {
public static final String constanct="a1";
void m1();
default void m2() {
System.out.println("a#m2");
}
public interface B {
public static final String constanct="a2";
void m1();
default void m2() {
System.out.println("B#m2");
}
参考博客:https://blog.csdn.net/qq_31142553/article/details/106036690

浙公网安备 33010602011771号