gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:48:20 24 4
gpt4 key购买 nike

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();
}
}

虽然它是通过接口(interface)而不是通过一个你没有继承任何东西的上下文中的具体类,但它仍然不是代码重用,即使维护内部类会很困难,但它仍然充当多重继承请澄清如果可能,使用内存表示。

最佳答案

让我们回顾一下您的代码中实际包含的内容。在这里声明接口(interface) A 和嵌套类 AClass:

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

在这里你声明接口(interface)B和一个嵌套类Bclass:

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

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

在这里实例化Aclass:

A.Aclass a = new A.Aclass();

在这里你实例化Bclass:

B.Bclass b = new B.Bclass();

现在请注意,AclassBclass 是两个完全不相关的类。这两个共享的唯一共同父类(super class)型是 Object

很明显,如果您甚至不尝试从两种类型继承,就谈不上多重继承。

在这里你至少尝试涉及两个父类(super class)型:

public class MultipleInheritance implements A, B { ... }

但是你永远不会在你的代码中涉及这个类型,它只是 main 方法的一个容器。这种类型虽然实现了两个接口(interface),但不会从它们继承任何东西:它继承了两种不同的类型(AclassBclass)。另请注意,即使它们具有相同的名称,仍然不会存在多重继承。只会发生命名冲突。

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

关于java - 它是多重继承吗?如果不是,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18631367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com