第七章
接口与抽象类
1
课程目标
JAVA的接口
JAVA的抽象类
2
课程定位
3
抽象类
抽象类(abstract class)和接口(interface)
是Java语言中对于类的抽象定义进行支持的两种机制。
抽象类和接口之间在对于类的抽象定义的支持方面具有很大的相似性,甚至可以相互替换。
可以构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类 。
4
抽象类的作用
有时,需要创建一个超类,该超类只定义一个为所有子类共享的一般形式,至于细节则交给每一个子类去填充。
这样的类决定了方法的本质,即子类必须执行,而不是提供这些方法的一个或多个实现方式。
这时的超类很抽象,以至于它没有任何具体的实例,这样的类称为抽象类。
5
想象一下
这里是个门框,但门是什么样以后再说
但这个位置只能是门!
6
抽象类的语法
抽象类
在Java中用abstract关键字来修饰一个类时,这个类叫做抽象类,如以下语句就可以定义一个简单的抽象类:
abstract class AbstractApp
{
……
}
7
抽象类的特点
抽象类不能直接用运算符new创建对象,必须产生其子类后才能由子类创建对象。由于抽象类不能被实例化,因此下面的语句会产生编译错误:
new abstractClass( ); //抽象类不能被实例化
抽象类的实体中可以有abstract方法,abstract方法只允许声明,而不允许实现,其格式如下:
abstract returnType abstractMethod( [paramlist] );
抽象类中不一定要包含abstract方法,但是,一旦某个类中包含了abstract方法,则这个类必须声明为abstract类。
如果一个非抽象类是一个抽象类的子类,那么它必须具体实现父类的abstract方法,即重写父类的abstract方法。
8
抽象类的应用
继承层越高,类就更通用,并且更抽象,有些层中的基类非常通用,更适于作为其他类的框架,而不适于作为具体类,来使用其特定实例。
在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样。
并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类往往用来表征我们在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。
9
现实中的例子
比如:如果我们进行一个图形编辑软件的开发,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域是不存在的,它就是一个抽象概念。
正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够实例化的。
如下例我们定义一个决定形状的抽象类Shap,该类中定义了两个抽象方法:draw()和erase(),而在实际的应用中可以定义一些子类来实现该抽象类,比如三角形、矩形、圆等等。
10
java第7章ppt课件 来自淘豆网m.daumloan.com转载请标明出处.