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

posted @ 2022-11-02 19:44  老王的日常  阅读(195)  评论(0)    收藏  举报