首页 > 编程语言 > 详细

JAVA-初步认识-第九章-抽象类-概述

时间:2017-10-29 22:41:36      阅读:248      评论:0      收藏:0      [点我收藏+]

一.

技术分享

继承中还有一部分,叫抽象类。

技术分享

为什么会出现抽象类,举个例子。

技术分享

截图中,DemoA和DemoB两个类具有相同的方法,如果两者之间没有继承关系,那就可以向上抽取。抽取之后,子类继承父类即可。而且子类中的内容可以省略不写,下面截图中保留了,其实可以省略。

技术分享

这就是我们之前所讲的继承,发现事物之间的关系,并将共性进行向上抽取。这样的话,可以提高代码的复用性。

可是我们产生了一个问题:DemoA和DemoB确实有相同的功能,但是内容不一样。我们都知道功能内部一般都处于封装形式,DemoA必然有显示功能,DemoB必然有显示功能,但是内容却不同。那就意味着函数分两部分,第一部分叫声明是一致的,函数体或者函数内容不一致。所以我们能明确,它们也具备共性,声明相同,功能内容不相同,我们也可以向上抽取,因为它们具备相同的功能。

技术分享

我们抽取了方法的声明,但是内容不能抽,抽不上来。最终形成的如下。叫做这类事物都具备这个功能,但是这工作的内容却不知道,因为每一个具体的事物都不知道。既然这个功能不能用大括号结束,定义不了内容的话,就用分号结束。结束语句,要么用大括号,要么用分号。

技术分享

我们观看下面的截图,抽取出来的内容,真看不懂。这样的函数一定要做标识,怎么标呢?一定要用一个关键字abstract,就是抽象的意思。

技术分享

技术分享

抽象关键字修饰函数,就称为抽象函数。抽象函数所在的类也必须标识成抽象的,为什么呢?这个事物当中,具备一个功能。这个功能是什么,怎么做的,不知道。那么这个事物也不具体。这个就是抽象类的由来。(有必要这么抽取么?)

技术分享

下面再举了一个例子,来描述抽象类。这里写的时候,我们是从下往上写的,先写了狗和狼,然后对相同的功能进行了抽取。但是,实际开发中,是通过分析,先有class 犬科,然后根据功能中具体内容的不同,分为狗和狼。

技术分享

功能细节确定不了,就是抽象方法,不具体的方法。犬科这个事物也具体不了。

狗和狼继承了犬科,真正能具体吼叫,都是这些具体的事物,

技术分享

有人会说,那既然功能的内容都不一样,那么就将犬科删去,干嘛还要抽象。但是在实际中,除了吼叫,还有其他功能,比如睡觉,无论狗还是狼,都是趴着睡觉。这样一来就不是抽象的。

(现在这么讲是有用处的,后面讲多态就知道了。)

抽取和不抽取是有区别的,抽取也没内容,还不是由子类来实现么。在用的时候,不一样。让狗叫一下,得指挥狗。让狼叫一下,得指挥狼....很多种,直接指挥犬科吼叫,就简单多了。

讲述抽象类的原因就在于不断地抽取,这样就会产生抽象的东西,就需要抽象类。

 

JAVA-初步认识-第九章-抽象类-概述

原文:http://www.cnblogs.com/wsw-bk/p/7751449.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!