它是多重继承吗?如果不是为什么?

Pra*_*ant 3 java multiple-inheritance

public interface A {
    class Aclass {
        int constants = 100;
        public void display()
        {
            System.out.println("Inside A");
        }
    }
    public void display();

}
public interface B {
    class Bclass {
        int constants = 130;

        public void display() {
            System.out.println("Inside B");
        }
    }
    public void display();
}

public class MultipleInheritance implements A, B {

    @Override
    public void display() {
        A.Aclass a = new A.Aclass();
        System.out.println(a.constants);
        B.Bclass b = new B.Bclass();
        System.out.println(b.constants);
    }

    public static void main(String args[]) {

        new MultipleInheritance().display();
    }
}
Run Code Online (Sandbox Code Playgroud)

虽然它是通过接口,而不是通过上下文中的具体类,你不继承任何东西,但仍然不是代码重用,即使保持内部类很难,但它仍然充当多重继承请用内存表示清除如果可能的话.

Mar*_*nik 5

让我们回顾一下您在代码中实际拥有的内容.在这里,您声明接口A和嵌套类AClass:

public interface A {
    class Aclass {
        int constants = 100;
        public void display()
        {
            System.out.println("Inside A");
        }
    }
    public void display();
}
Run Code Online (Sandbox Code Playgroud)

在这里,您声明接口B和嵌套类Bclass:

public interface B {
    class Bclass {
        int constants = 130;

        public void display() {
            System.out.println("Inside B");
        }
    }
    public void display();
}
Run Code Online (Sandbox Code Playgroud)

在这里你实例化Aclass:

A.Aclass a = new A.Aclass();
Run Code Online (Sandbox Code Playgroud)

在这里你实例化Bclass:

B.Bclass b = new B.Bclass();
Run Code Online (Sandbox Code Playgroud)

现在注意,Aclass并且Bclass是两个完全不相关的类.这两个共享的唯一常见超类型是Object.

显然,在您甚至没有尝试从两种类型继承的情况下,不会谈论多重继承.

在这里,您至少尝试涉及两种超类型:

public class MultipleInheritance implements A, B { ... }
Run Code Online (Sandbox Code Playgroud)

但是你从不在代码中涉及这种类型,它只是main方法的容器.这种类型在实现两个接口时,不会多次从它们继承:它继承了两种不同的类型(Aclass,Bclass).还要注意,即使它们具有相同的名称,仍然没有多重继承.只会发生命名冲突.

多重继承严格来说是方法实现的继承,显然你无法在Java中实现这一点.