![](/img/trans.png)
[英]Java: Pass actual <T extends Event> class. (Generics Problems)
[英]By default any class extends Object class. Doesn't it mean java supports multiple inheritance?
众所周知,在Java中我们只能扩展“ ONE”类。
但是为了理解:
在这种情况下,默认情况下我们将扩展两个类。
如果Java不支持多重继承,为什么允许?
不,Java阻止一个类直接扩展多个超类。 A类可以扩展B类,而B类可以扩展C类。这仍然是单一继承。 所有这些类都形成一棵树,其根是Object类,并且每个类(Object除外)都具有一个直接的超类(或父类),即Object或其他类。
那将是一个多层次的继承 。 您误会了多级到多级。
A->B->C //This is multilevel inheritance which you are talking about
多重继承就像(在Java中是不可能的)
A
| |
B C
Java不支持使任何模棱两可的情况消失的多重继承。 但是认真实现的实现关键字确实会带来多重继承的感觉
结论:
A类可以扩展B类,而B类可以扩展C类。这仍然是单一继承。 所有类都形成一棵树,其中根是Object类,并且每个类(Object除外)都只有一个直接的超类(或父类)
每当类A扩展类B时,类A不再扩展Java.lang.Object,但是:由于每个类都扩展了Java.lang.Object,如您之前所说,类B将扩展Java.lang.Object,因此类A是扩展Java.lang.Object。仍然是该特定类的子类。
“默认情况下,隐式扩展对象”意味着如果您在类声明中没有看到extend关键字,则它“无形但直接”扩展了Object。 如果看到extends关键字,则该类不会直接扩展Object,而是会在extends子句中提到的类。 现在您必须遍历该层次结构,并在某一时刻找到一个没有“扩展”的父类,然后隐式继承再次出现。
层次结构中的所有类都可传递地扩展Object,但只有根直接进行扩展。 可传递的,因为所有子类都继承其父级的所有特征,包括其父级类和已实现的接口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.