java基础:为什么不支持多继承

反过来说

  • 如果在一个子类继承的多个父类中拥有相同名字的实例变量,子类在引用该变量时将产生歧义,无法判断应该使用哪个父类的变量

  • 如果在一个子类继承的多个父类中拥有相同方法,子类中有没有覆盖该方法,那么调用该方法时将产生歧义,无法判断应该调用哪个父类的方法

伦理上

  • Java继承是程序扩展的一种方式,A extends B,表示A对B进行了一定程度的扩展,在现实以一种表示A是B的儿子,我们动脑想一下,一个人能有多个亲爹吗?显然是不能的。

  • Java是一门面向对象的语言,可以想英语,汉语一样描述整个世界,它也可以真是的反应人类社会。如果对Java的继承有清晰的掌握的话,我们可以看到Java的继承呈现的是一个金字塔状,此话怎讲呢?Object可以有多个儿子,他的儿子又可以有很多孩子,... ... 。如此反复不就是金字塔状吗?

  • 在OOP的世界里。单根继承意味着所有的类都会有一个最上面的终极类,java里面这个类就是Object。单根继承既可以说是一门语言的特性,也可以说是一门语言的一个选择。从纯粹技术的角度来说,java也可以做到多继承,只是如果那样的话那么java就不会再是我们今天所认识的java

以上是从伦理上说明Java是不支持多继承的

单继承优点

兼容性

单根继承带来的一个效果就是所有的对象归根到底都是相同的基本类型。这带来的好处就是任何java出现的新类库中,兼容性的问题会大大降低,这一点很好理解。但是在C++之中,总是会有一些不兼容的接口,这虽然带来了一定的灵活性,但是对于不兼容的接口,往往就是要通过多继承来解决。

便利性

因为单根继承,所有的对象都会具备某些一样的功能,比如所有的对象都会有hashcode方法,有euqals方法。因此拿到一个对象时,无论这个对象从哪里来,我们都知道可以对他执行某些基本操作。参数传递也得到了简化。

垃圾回收

单根继承会使得垃圾回收变得简单很多。因为所有对象都保证具有其类型信息,因此不会因为无法确定类型信息而带来不便。垃圾回收正是java相对于C++的重要改进之一。

你可能感兴趣的:(java基础:为什么不支持多继承)