java里的类:为什么只能继承一个类,而可以实现多个接口?
PHPz
PHPz 2017-04-17 17:30:02
0
4
634

1、java官方教程里有一段话,解释了原因:
One reason why the Java programming language does not permit you to extend more than one class is to avoid the issues of multiple inheritance of state, which is the ability to inherit fields from multiple classes. For example, suppose that you are able to define a new class that extends multiple classes. When you create an object by instantiating that class, that object will inherit fields from all of the class's superclasses. What if methods or constructors from different superclasses instantiate the same field? Which method or constructor will take precedence? Because interfaces do not contain fields, you do not have to worry about problems that result from multiple inheritance of state.

http://docs.oracle.com/javase/tutorial/java/IandI/multipleinheritance.html

2、问题是这段话我没看懂啊,我操。
真的认认真真看了,而且这个教程一节一节看下来,没看懂的地方实在不多啊——可是这么关键性的这一段,居然看不懂啊我操。

3、大伙都抡起袖子来解释一番呗~

PHPz
PHPz

学习是最好的投资!

répondre à tous(4)
伊谢尔伦

La classe publique A a public int i=0, some() {i=1;>
La classe publique B a public int i=0, some() {i=2;>
la classe publique C Il y a public int i=0, extends A,B
Maintenant C instancie c et exécute c.some(), i=?
L'héritage de plusieurs classes n'est pas autorisé, juste pour éviter d'hériter de plusieurs classes parents et d'attribuer la même variable membre lors de l'appel de la même méthode ou du même constructeur, ce qui serait compliqué...

小葫芦

Parlez-moi de ma compréhension, veuillez indiquer si je me trompe.
La raison pour laquelle les extensions multiples ne sont pas autorisées est d'éviter l'héritage multiple. Si l'héritage multiple est autorisé, vous pouvez alors obtenir les variables de plusieurs héritiers. Si vous définissez une classe qui hérite de plusieurs classes, lorsque vous obtenez une instance via la méthode de création, cette instance obtiendra toutes les variables/méthodes qu'elle étend, c'est-à-dire toutes les classes parentes. Si plusieurs classes parentes ont la même variable, alors. Provoquer la confusion. Si l'interface n'a pas de variables, il n'y a pas de contradiction ci-dessus.

迷茫

En plus de ce qui est mentionné ci-dessus, l'héritage unique peut également éviter le problème du diamant causé par l'héritage multiple.

Peter_Zhu

Je pense que l'héritage doit refléter les caractéristiques (propriétés) et les comportements (méthodes) qu'un objet doit avoir.
Pensez en termes de programmation orientée objet :
La classe parent rassemble toutes les caractéristiques et comportements communs de la classe enfant.
La sous-classe possède toutes les fonctionnalités et comportements "publics" de la classe parent.
Cela reflète la structure hiérarchique entre les classes et résout également le problème de la transition de la description du système à l'utilisation du code pour décrire le système.
Ce qui précède est purement pour ma compréhension. S'il y a des informations trompeuses, veuillez accepter les conseils.
Référence : Programmation Java 4e édition

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal