Java 是否可以通过虚拟机支持多重继承?

Java 是否可以通过虚拟机支持多重继承?,java,c++,inheritance,Java,C++,Inheritance,我知道Java没有任何支持多重继承的能力。例如,C++继承了A类和B类的所有属性,然后编译器就混淆了应该在A和B中定义的方法,所以C++支持多重继承,java不支持。 我知道通过使用接口可以在Java中实现这种多重继承 我的疑问是,钻石问题是什么,如何用Java解决 例如,考虑多个类,如A、B、C、D类B和C类继承A类的属性,D类继承B类和C类的属性,这称为“菱形问题”。p> 我们如何在Java中解决这个菱形问题?这个菱形问题何时会在编码中出现 我也提到C++中使用虚拟可以实现这种多重继承的概念

我知道Java没有任何支持多重继承的能力。例如,C++继承了A类和B类的所有属性,然后编译器就混淆了应该在A和B中定义的方法,所以C++支持多重继承,java不支持。 我知道通过使用接口可以在Java中实现这种多重继承

我的疑问是,钻石问题是什么,如何用Java解决

例如,考虑多个类,如A、B、C、D类B和C类继承A类的属性,D类继承B类和C类的属性,这称为“菱形问题”。p> 我们如何在Java中解决这个菱形问题?这个菱形问题何时会在编码中出现

<>我也提到C++中使用虚拟可以实现这种多重继承的概念。而且,Java是为简单而构建和设计的

<>虚拟现实在C++中的实际意义以及如何在java中使用?是否可以通过虚拟机实现多重继承


我是Java初学者,非常抱歉提出这样的问题。但是,我相信可以从我的错误中吸取教训

如果您想要多个“继承”,您需要实现多个
接口
。每个接口声明实现类需要为其提供定义的抽象方法

public class MyClass implements interface1, interface2, interface3{
  // provide a definition to the abstract methods of interface
}  
< C++中的“钻石”问题是当一个类继承两个类时,它们都有一个共同的祖父母的方法。在Java中,没有菱形问题,因为您可以从不扩展两个类;只有一个类和许多接口


你的问题太多了。我建议你把你的文章分成几个独立的问题。

如果你想要多个“继承”,你需要实现多个
接口。每个接口声明实现类需要为其提供定义的抽象方法

public class MyClass implements interface1, interface2, interface3{
  // provide a definition to the abstract methods of interface
}  
< C++中的“钻石”问题是当一个类继承两个类时,它们都有一个共同的祖父母的方法。在Java中,没有菱形问题,因为您可以从不扩展两个类;只有一个类和许多接口


你的问题太多了。我建议您将文章分成几个独立的问题。

Java中没有多重继承的概念。实现多个接口是可能的,但这不是多重继承

因为没有多重继承,所以在有多重继承的语言中出现的“钻石问题”在Java中不会出现。因此,Java中没有
virtual
关键字-不需要它


Java的设计者认为,多重继承实际有用的情况太少,不值得在语言中包含。在大约15年的Java编程生涯中,我只遇到过一次C++风格的多重继承有用的业务问题。所以我很高兴地说他们是对的。

Java中没有多重继承的概念。实现多个接口是可能的,但这不是多重继承

因为没有多重继承,所以在有多重继承的语言中出现的“钻石问题”在Java中不会出现。因此,Java中没有
virtual
关键字-不需要它


Java的设计者认为,多重继承实际有用的情况太少,不值得在语言中包含。在大约15年的Java编程生涯中,我只遇到过一次C++风格的多重继承有用的业务问题。所以我很高兴地说他们是对的。

不能使用接口来实现多重继承。你不能从两个无关的C++类继承一个实现。您所能做的就是实现多个接口。在Java=)中没有“钻石”的情况,您不能使用接口来实现多重继承。你不能从两个无关的C++类继承一个实现。您所能做的就是实现多个接口。Java中没有“钻石”的情况=)是的,在Java中不需要虚拟的背后还有其他原因吗?如果是这样,而不是“虚拟”,我们是如何实现的,为什么不需要Java中的虚拟?我需要理解虚拟的概念。而且,若类实现了多个接口,那个么我们将使用什么来调用它呢?那个么它不应该是一个多重继承吗??如果我做错了什么,请原谅。作为一名Java初学者,我只是在向你学习!好的,但是“虚拟”是C++概念,不是java概念。Java没有多重继承。询问如何使用“虚拟”就像询问如何清洁自行车上的化油器。如果需要,我很乐意进一步澄清,米娜。我一直在努力“虚拟”的确切含义,当我在编程C++时,是的,我肯定将来会有疑虑。你比我更有经验,所以我可以问你。。我应该在哪里问我的疑问?在这个问题上@David Wallacei如果他们与这个问题直接相关,当然可以对这个问题添加评论。如果你想引起我的注意,一定要打电话给我——只要在我的名字前面加上@。如果它与这个问题无关,发布一个新的问题——我可能会看到它,如果我不知道的话,同样有知识的人肯定会看到。不要害羞,因为你认为自己是初学者。每个人都曾经是初学者。是的,这背后还有其他原因吗