`

JAVA为什么只允许单继承

 
阅读更多
一个类只能继承一个其他的类
     在Java语言中禁止多重继承:一个类可以具有多个直接父类。多重继承不合法的原因是容易引发意义不明确。例如,有一个类C,如果允许它同时继承A类与B类(class C extends A,B{}),假如A、B两个类都有同一种方法fun(),如果定义:
     C c = new C();
     那么c.fun()应该调用哪一个父类的fun()方法?无法给出答案,因此Java语言禁止多重继承。 但C++却是可以的,所以C++比起java在语法上却难了些。

     但一个类可以实现多个接口,这又是为什么?
     这一特性和上一特性结合使用,可以获得和多重继承相似的效果。
     现假如类C实现了A与B两个接口(class c implements A,c{}),且这两个接口都有一个抽象fun()方法,现在调用方法时没有任务不明确的地方,因为接口中的所有方法都是抽象,并且超类的任何方法都需在子类中地覆盖实现,所以调用时其实是调用自己本身的实现方法,没有什么调用不明确的说法。
分享到:
评论
1 楼 huosange 2014-02-11  
简单明了,通俗易懂

相关推荐

    详解java为什么不允许类多重继承却允许接口多重继承

    主要介绍了java为什么不允许类多重继承却允许接口多重继承,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    java子类的继承性

    知道子类的继承性,子类创建对象的过程,成员变量的继承和隐藏,方法的继承和重写。

    java类的继承实例

    继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为

    Java继承时构造函数的调用

    Java继承时构造函数的调用, java面向对象特征: 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...

    Java面向对象继承.pdf

    使用 implements 关键字可以变相的使java具有多继承的特性,使用范围为类继承接口的情况,可以同时继承多个接口(接口跟接口之间采用逗号分隔)。 super 与 this 关键字 super关键字:对父类成员的访问;this关键字...

    java试题经典考试试题

    Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble

    java的继承.docx

    在Java中,继承是一种重要的面向对象编程(OOP...它允许一个类从另一个类派生,并且获取被继承类的属性和方法。通过继承,可以创建层次化的类结构,提高代码可重用性和可维护性。下面是对Java继承进行超级详细的介绍。

    java基础知识-继承的使用

    java中的继承是一种面向对象编程的重要概念,它允许一个类继承另一个类的属性和方法。使用继承可以实现代码的重用和层次化组织。 要使用继承,需要定义一个子类(派生类)来继承一个父类(基类或超类)。子类可以...

    C# To JAVA Converter v17.10.6

    C# To Java converter是一款将C#代码片段或者C#项目转换为JAVA的工具。 转换所有版本的C#代码 评估所有引用的程序集和.NET项目,以便更完整地解析外部引用 许多转换和格式化选项 将C#代理和lambdas转换为Java接口...

    Java8的官方文档

    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向...

    Java实验三_继承与接口_艾孜尔江·艾尔斯兰著.zip

    本资源主要讲述了Java语言的特性并通过实验的形式阐明了Java语言的继承和接口的使用,由于艾孜尔江亲自执笔并实践,后续仍有Java成套资源尽请关注。 Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还...

    Java程序设计复习题.docx

    D、在Java中类只允许单一继承。 17. 下列类定义中,不正确的是(C )。 A) class x { .... } B) class x extends y { .... } 1 C) static class x implements y1,y2 { .... } D) public class x extends Applet { .......

    Java基础知识总结(总共六章)

    JAVA 基础知识总结 第一章 Java 入门 ...在java 中允许多层继承,在继承中子类不能访问父类中的私有操作,而 只能继承全部的公有操作,对于私有内容不能直接访问,但是可以通过 其他途径访问 在实例化子类对象时

    Java技术参考手册_java_

    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向...

    Java语言实用教程5——类的继承性与多态性

    新类可从现有的类中产生,将保留现有类的状态属性和方法并可根据需要加以修改。新类还可添加新的状态属性和方法,这些新增功能允许以统一的风格处理不同类型的数据。这种现象就称为类的继承。

    计算机Java、网络面试资料

    另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。 2. Java的接口和C++的虚类的相同和不同处。 由于...

    史上最全Java面试题目大集合

    Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类booleanBoolean charCharacter byteByte shortShort intInteger longLong floatFloat doubleDouble ...

    瑜琅java学习笔记

    1 java起源 2 java语言概述 3 简单(基本)数据类型 4 运算符:java...8 继承:继承是面向对象编程技术的一块基石,因为它允许创建分等级层次的类 9 包和接口 10异常处理 11多线程编程 12输入/输出、小应用程序and others

    JAVA面试题最全集

    Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都...

    Java技术参考手册.docx

    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向...

Global site tag (gtag.js) - Google Analytics