为什么Java不支持多继承?

没想过面试的时候,会遇到语言设计上的问题。现场答得并不好因为一直没思考过,经过了点搜索,渐渐有点思路。

1.
避免“钻石型”多继承问题:有两个类B和C继承自A。假设B和C都继承了A的方法并且进行了覆盖,编写了自己的实现。假设D通过多重继承继承了B和C,那么D应该继承B和C的重载方法,那么它应该继承哪个的呢?

2. 多种继承会使系统设计更加复杂且难以维护。

3. Java里的接口规定一个类该做什么,而不是怎么样做。而多继承可能会出现一种情况,就是两个类通过不同的方法做同样的东西,子类无法确定选择哪个?

总体而言,我估计1才是最重要的;2,3略显有点不够说服力。当时记录一下这个问题吧。

为什么Java不支持多继承?,布布扣,bubuko.com

时间: 2024-11-18 21:35:14

为什么Java不支持多继承?的相关文章

继承的基本概念: (1)Java不支持多继承,也就是说子类至多只能有一个父类。 (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法。 (3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承。 (4)子类中定义的成员方法,并且这个方法的名字返回类型,以及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承。 分析以上程

继承的基本概念: (1)Java不支持多继承,也就是说子类至多只能有一个父类. (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法.(3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承.(4)子类中定义的成员方法,并且这个方法的名字返回类型,以及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承. 分析以上程序示例,主要疑惑点是“子类继承父类的成员变量,父类对象是否会实例化?私有成员变量是否会被继承?被继承的成员变量

《浅析:java不支持多继承的原因》

很久以前,博主的一个好朋友给我考了我一个问题,为什么Java不支持多继承,如果多继承会有什么错误.这个问题困扰了我很久,我从单继承方面去推导过,又从多态的层面去思考过,但都无法解释为什么Java不支持多继承的原因,后来也有在学校问老师,老师也只是让我多去思考,好吧,那我就多去思考吧. 在1995年,Java语言的设计者James Gosling发表白皮书的时候谈到了一个想法:Java为什么不支持多继承. 我们从设计人员给Java这门语言的定义去说起:JAVA:一个简单的,面向对象的,分布式的,解

Java中 支持多继承吗?

//别人问这个问题的时候 一定要谨慎回答; 1.java中类不支持多继承,只能单继承,但是可以多实现; 2.java 中接口之间支持多继承,接口可以继承多个继承; 普通类/抽象类(只要class声明的)====================extends(继承)===================普通类/抽象类(只要class声明的) 普通类/抽象类(只要class声明的)==================implements(实现)===========接口; 接口===========

Java支持多继承么?

Java中类不支持多继承,只支持单继承(即一个类只有一个父类). 但是java中的接口支持多继承,,即一个子接口可以有多个父接口.(接口的作用是用来扩展对象的功能,一个子接口继承多个父接口,说明子接口扩展了多个功能,当类实现接口时,类就扩展了相应的功能). Java只支持单继承是出于安全性考虑,如果子类继承了多个父类里面有相同的方法或者属性,子类不知道具体继承哪个,而接口可以多实现,是因为接口只定义方法,没有具体的逻辑实现,多实现也要重新实现方法. 原文地址:https://www.cnblog

Java学习笔记-4.继承与多态

一.继承机制 1.继承:允许一个类作为另一个类的扩充版本 2.单继承:一个类只继承了一个父类    多继承:一个类继承了多个父类 Java只支持单继承,C++支持多继承 二.类的继承 1.形式: class SubClass extends BaseClass { //子类类体,定义子类的新成员 } Java中所有的类都直接或间接地继承类 java.lang.Object 2.构造方法 (1)显式构造方法    形式:super(参数表); 系统执行到这条语句时,会根据参数表判断调用父类中哪个构

黑马程序员——Java基础---面向对象之继承

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流!                                                                 面向对象之继承  一:继承(extends) (1)继承的体系结构:就是对要描述的事物进行不断的向上抽取,就出现了体系结构.

黑马程序员——JAVA学习笔记四(继承、接口、内部类)

1,    通过extends关键字让类与类之间产生继承关系.多个类中存在相同属性和行为时,将这些内容抽取到单独的一个类中,那么多个类无需定义这些属性和行为,只要继承那个类即可,已存在的类叫做超类,基类,或父类.新类称为子类,派生类,孩子类. 子类可以直接访问父类中的非私有的属性和行为.子类无法继承父类中私有的内容.JAVA不支持多继承,只支持单继承,多实现. 继承提高了代码复用性,让类与类之间产生了关系.为多态提供了前提. 2,    super关键字代表父类中成员变量内存空间的标示.两个作用

java基础部分----3.继承、子类实例化、函数的复写

1.继承 java只支持单继承,一个子类只能继承一个父类.一个父类可以有多个子类 关键字:extends 减少重复代码 2.继承的语法特点 class Student extends Preson{ } 如果子类继承父类,同时子类在这个基础上添加自己的成员变量和成员函数 3.子类实例化 1.生成子类的过程 在子类的构造函数中,必须调用父类的构造函数(根据()传入的参数个数以及类型决定) lass Student extends Person{ int grade; Student(){ supe

Java学习---3.面向对象--继承和权限控制,重写,继承中的构造方法

1.Java只能支持单继承,不允许多继承.子类自动拥有基类的所有成员. class Students extends school(){} ,父类中私有的方法也会被继承下来,但是子类没有使用权. 内存分析: 2.default类只能被同一个包内部的类访问 super关键字:Java中使用super来引用基类的成分. 重写::equals().其默认定义为两者为同一对象.