JAVA-初步认识-第八章-继承-单继承和多重继承

一.

说完了继承的基本概述之后,了解一下在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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/268198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker重启容器

docker restart 容器id

让你的Silverlight程序部署在任意服务器上

今天在CSDN上逛,看到一篇不错的教程贴,“让你的SilverLight程序部署在任意服务器上”,转到园子里,希望更多朋友受益。 即使是免费的只支持HTML的空间,同样可以部署SilverLight应用。众所周知,SilverLight的…

VS2010小Bug:找不到System.Web.Extensions.dll引用

用上VS 2010的日子,快乐并痛着... 今天本来是想写这篇随笔的,却在处理朝阳无限提交的新模板的CSS时,一打开CSS文件,VS2010就崩溃,于是发现了VS2010的另一个Bug。 这个VS2010的Bug是在将博客园博问的代码从VS2008升级至…

TCP 之 RST 原因分析

5. 往一个对端已经关闭的套接字上写入数据会收到一个RST信号 1.发送端的 发送缓冲区还有数据,但接收端tcp的接收通道已关闭 2. SYN到达某端口但此端口上没有正在监听的服务器。对于UDP,当一个数据报到达目的端口时,该端口没在使用,它将产生一个ICMP端口不可达的信息…

《Windows核心编程》---剪贴板

剪贴板是由系统定义的,并不属于任何一个特定的进程。系统中所有进程都可以访问和设置剪贴板。剪贴板最大的特点就是数据传输没有明确的目标,数据是被动访问的;剪贴板的内容可以被多次访问,直到新的数据写入。剪贴板是一种可供选择…

docker后台守护式启动

docker后台启动 docker run -d 镜像名

浏览器打不开网页,但是还可以聊qq?

电脑网络明明已经连接,但是就是打不开网页?下面介绍下解决方法。 原因:DNS解析导致网页打不开。路由器没有获取到DNS 我们的系统会缓存我们平时用到的一些DNS地址,这个功能主要是加速我们对网络的访问。但是有时候这些缓存的DNS地…

项目重构方案设计

最近接手到一个已经成型的项目,然后我们的任务就是对它进行重构,这个项目是一个功能很齐全的WPF视频播放器(附带很多其他功能),在仔细 研究了项目的背景和架构以后,初步做出了一下的重构方案: 目…

docker top查看容器中运行的进程信息

docker top :查看容器中运行的进程信息,支持 ps 命令参数。 语法 docker top [OPTIONS] CONTAINER [ps OPTIONS] 容器运行时不一定有/bin/bash终端来交互执行top命令,而且容器还不一定有top命令,可以使用docker top来实现查看container中正…

易经给我们的64个人生智慧

《易经》没有那么神秘,它是科学的,它就在我们的身边,我们每天的生活起居,工作事业,健康幸福,都受这64个哲理的左右。我们以科学的态度对待这64个哲理,就形成了64个感悟,64个感悟回答…

华为2018软件岗笔试题解题思路和源代码分享

2017年9月26日,参加了华为技术有限公司的笔试,题目类型是软件题,没有选择填空问答类型,总共是3道编程题目,题目难度适中,在两个小时内完成3道题目的AC,所以分享的代码都是可运行且完全AC的! 和广…

docker镜像加载原理

docker镜像加载原理

设计模式是用来弥补面向对象编程缺陷的方法总结

面向对象和设计模式都是大家耳熟能详的概念。面向对象是以对象为基本元素,对数据与逻辑行为进行封装。实现面向对象过程的方法是使用抽象,同时在使用抽象进行分析设计的时候就产生了类型,并隔离了抽象与实现。这个过程是有很多的优点的&#…

navicat的安装

1.下载 这里使用的是11.1版本。 2.安装到D盘 3.破解 下载 参考:http://www.cnblogs.com/da19951208/p/6403607.html 将PatchNavicat粘贴到安装目录,然后双击 选择navicat、 结果: 4.这个时候可以使用了 转载于:https://www.cnblogs.com/junca…

docker实现宿主机和容器之间映射添加数据卷

docker run -it —privilegedtrue -v /宿主机绝对路径:/容器内目录 镜像名 卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此docker不会在容器删除时删除其挂载的数据卷 在ubuntu容器内 /tmp/docker_data 下新建test.txt文件 在宿主机…

实验四 恶意代码

中国人民公安大学 Chinese people’ public security university 网络对抗技术 实验报告 实验四 恶意代码技术 学生姓名 冷其航 年级 14级 区队 二区队 指导教师 高见老师 信息技术与网络安全学院 2017年10月24日 实验任务总纲 2017—2018 学年 第 一 学期 一、实验…

Linux系统删掉多个文件

rm -f 2010-10-*.log转载于:https://www.cnblogs.com/dpf-learn/p/7752952.html

docker启动容器指定端口和随机分配端口

例子 我要启动tomcat docker run -d -P tomcat 大些-P表示随机分配端口 docker run -d -p 8086:8080 tomcat 小些-p 表示指定端口,主机端口:docker容器端口