一.

说完了继承的基本概述之后,了解一下在java中它的体现方式。

大家都知道java来自于c++,c++有多继承,java对其中的多继承进行了改良。为什么不直接支持多继承呢?要牢记,这个原因在后面可以解决很多问题。

二.

观看下面的截图,截图表现的是多继承关系,就是说C同时具备A和B里面的东西。

相较于多继承带来的好处,java更注重多继承带来的问题,因此把多继承改良掉了。

现在来解释为什么不直接支持多继承。

以上面截图中的例子来讲解,为什么不支持多继承。C是上面A和B的子类,也就具备A和B中的方法,也就是通过匿名对象,调用A和B中的方法。子类拿到了父类中的两个方法,但是调用show()的时候,不知道调用哪一个show(),这就是不确定。

两个类中有相同的方法时(这里的相同说的是函数声明相同),不知道运行哪一个。这就是java不直接支持多继承的原因,因为多个父类中有相同成员,会产生调用的不确定性。

三.

截图所描述的就是多继承。依我目前的认识来看,从A到D,A中所包含的共性成员是最多的,然后逐层递减,但是设置这么多层的继承,是否有这个必要?还是说在实际应用中,对层数有所要求?
上面的截图称之为继承体系,父类是在不断地向上抽取过程中产生的。

A是怎么来的?分析一下,不断向上抽取出来的,A里面定义的,是这个体系里面,最继承的内容,内容最少。因为它不断地向上抽取,抽取是共性的。因此,整个体系中最基本的功能都在A中。→这里的分析,体现出我们对于多层继承的不理解,对于继承二字也不理解。首先,继承意味着所有都拥有,也就是C中的成员,D中都拥有,往上是一个抽取的过程。核心在继承二字。

当想要使用一个体系的时候,体系涉及的对象很多,这些对象之间存在的一些关系,因为功能都很相似,不断抽取,形成体系。那就意味着,想要使用一门技术,就要使用一个体系。我想使用这个体系的时候,应该查阅最上面的类。因为最上面的定义的是这个体系中最共性,最基本的功能。查阅完顶层类之后,最终是要拿对象调用方法,这里有五个类,创建哪个对象靠谱?有人说看完A了,直接创建A类对象就行了。这么做是可以的,但是有两点问题要注意,一是A能不能创建对象?二是用A创建对象,使用的成员太少,不如使用下面的类,继续往下推的话,采用D类做对象最合适,D不仅可以使用A的对象,还可以使用自己特有的方法。

Java支持多层继承,也就是继承体系,

以后使用继承的时候,记住这两点就可以了。同时后面学习集合和IO时,也是这两点。

总结:讲解了一下,多继承的特点。

转载于:https://www.cnblogs.com/wsw-bk/p/7723993.html

JAVA-初步认识-第八章-继承-单继承和多重继承相关推荐

  1. python单继承和多继承_Python 类继承(单继承和多继承)

    在面向对象的编程中,类的继承是非常重要的一个特性,Python同样支持类的继承.和Java等语言的单继承不同,Python支持类的单继承和有限的多继承. 一.Python类单继承 在Python中,类 ...

  2. Java基础知识学习06-封装、继承

    封装 概念:将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法实现对隐藏信息的操作和访问. 特点:提高代码的复用性: 隐藏类的实例细节,方便修改和实现: 提高代码的安全性. ...

  3. Python OOP:继承、单继承、多继承、__mro__、子类重写父类同名属性和方法、子类调用父类同名属性和方法、多层继承、super()、私有(实例)属性和方法、获取修改私有属性值、私有类属性

    一.继承 Python⾯向对象的继承指的是多个类之间的所属关系,即⼦类默认继承⽗类的所有属性和⽅法. 继承作用:继承可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展. 在P ...

  4. 继承菱形继承问题及解决

    继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类.继承呈现了面向对象程序设 ...

  5. java接口构建英雄属性_Python接口类的多继承以及抽象类的单继承

    一.接口类(面向对象开发的思想和规范)的多继承 需求: 定义一个tiger类:会走,会游 定义一个hawk类:会走,会飞 定义一个swan类:会走,会游,会飞 (a)如果像以下代码的方式,则不能够满足 ...

  6. 单继承模式下的JAVA和C++

    总结:单继承模式下JAVA和C++相同,处理代码方面和事后处理方面有点小差异外没有什么本质的不同 JAVA一共3个文件 1.Base.class 2.Child.class(继承Base) 3._Ma ...

  7. JAVA只要掌握内部类,多继承和单继承都不是问题

    本文分享自华为云社区<[JAVA冷知识]JAVA居然支持多继承?让我们用内部类去吧!>,作者:山河已无恙 . 众多周知,对于面向对象语言来讲,JAVA是不支持多继承的,只支持单继承,但是提 ...

  8. Java中继承和实现的区别【单继承,多实现】

    继承:如果多个类的某个部分的功能相同,那么可以抽象出一个类出来,把他们相同的部分都放到父类中,让他们都继承这个类. 实现:如果多个类处理的目标都是一样的,但是处理的方法不同,那么就可以定义一个接口,让 ...

  9. java单继承和多继承

    java单继承和多继承 单线程:一个子类只能继承自一个父类 多线程:一个子类可以继承自多个父类 java继承关键字extend和implement,Java所有子类都继承自 java.lang.Obj ...

最新文章

  1. 中台辨析:架构的演进趋势
  2. AAAI2021论文:一个高性能3-D目标两步检测法Voxel R-CNN
  3. Xamarin XAML语言教程ContentView视图作为自定义视图的父类
  4. Spring – ${} is not working in @Value--转载
  5. 性能计数器取网卡流量
  6. php object keys_原生js中Object.keys方法详解
  7. 哪17个人被约谈_蚂蚁上市暂缓约谈,70万中签股民彻夜无眠,是喜还是忧?(附股)...
  8. 2022考研英语二大纲
  9. servlet提交表单(思考了好多天)
  10. python 检查域名是否可以访问_糖尿病人是否都要做喝糖水的检查?结果可以说明胰岛功能水平吗?...
  11. 注意细节:Javascript中的变量作用域
  12. 计算机数字音频工作站 pdf,分享一款开源和免费的数字音频工作站
  13. 摄入发霉食物和晚睡会导致肝癌
  14. excel如何让日期/时间增加指定分钟、小时、日
  15. 浪涌特性及保护电路Surgc Stop
  16. C51单片机控制蜂鸣器
  17. 真实案例:网站遭遇DOS攻击
  18. [庆国庆]来生情缘-温情女儿国
  19. ABP学习笔记:领域服务 和 应用服务 区别
  20. CTFHUB-技能树-WEB通关

热门文章

  1. spartan6不能直接把时钟连到IO上
  2. C# 动态添加SEO 信息,不和静态页面重复和叠加
  3. PHP从零开始--数据库
  4. 本地环境用eclipse搭建spring源码环境
  5. DOM-6 【兼容】读写样式属性、操作伪元素、运动元素初探
  6. ImportError: No module named 'chardet'
  7. codeforces 1045 D. Interstellar battle
  8. java 读取properties文件
  9. scikit-learn点滴
  10. IOS 文件读取4种方法 转字符串 和data