设为首页 加入收藏

TOP

抽象类、接口与包
2011-06-09 13:13:21 来源: 作者: 【 】 浏览:566次 评论:0
5.5
抽象类、接口与包
5.5.1
抽象类
假设我们要编写一个计算矩形、三角形和圆的面积与周长
的程序,若按前面所学的方式编程,我们必须定义四个类:圆
类、三角形类、矩形类和使用前三个类的公共类,它们之间没
有继承关系,如图5.4所示。程序写好后虽然能执行,但从程序
的整体结构上看,三个类之间的许多共同属性和操作在程序中
没有很好地被利用,致使重复编写代码,降低了程序的开发效
率,且使出现错误的机会增加。
第5章 消息、继承与多态
图5.4 具有相同特征却彼此独立的几个类
圆类
圆心座标
半径
计算面积
计算周长
三角形类
底边长

计算面积
计算周长
矩形类


计算面积
计算周长
第5章 消息、继承与多态
仔细分析上面例子中的三个类,可以看到这三个类都要计
算面积与周长,虽然公式不同但目标相同。因此,我们可以为
这三个类抽象出一个父类,在父类里定义圆、三角形和矩形三
个类共同的数据成员及成员方法。把计算面积与周长的成员方
法名放在父类给予说明,而具体的计算公式再在子类中实现。
如图5.5所示。这样,我们通过父类就大概知道子类所要完成的
任务,而且,这些方法还可以应用于求解平行四边形、梯形等
图形的周长与面积。这种结构就是抽象类的概念。
第5章 消息、继承与多态
图5.5 抽象类及其应用
圆类
圆心座标
半径
三角形类
底边长

计算面积
计算周长


抽象类
梯形类
计算面积
计算周长
抽象方法
计算面积
计算周长
矩形类
计算面积
计算周长
上、下底边
长高
第5章 消息、继承与多态
在Java程序中用抽象类(abstract class)来实现自然界的抽象概
念。抽象类的作用在于将许多有关的类组织在一起,提供一个公
共的类,即抽象类,而那些被它组织在一起的具体的类做为它的
子类由它派生出来。抽象类刻画了公有行为的特征,并通过继承
机制传送给它的派生类。在抽象类中定义的方法称为抽象方法,
这些方法只有方法头的声明,而用一个分号来代替方法体的定
义,即只定义成员方法的接口形式,而没有具体操作。只有派生
类对抽象成员方法的重定义才真正实现与该派生类相关的操作。
在各子类继承了父类的抽象方法之后,再分别用不同的语句和方
法体来重新定义它,形成若干个名字相同,返回值相同,参数列
表也相同,目的一致但是具体实现有一定差别的方法。抽象类中
定义抽象方法的目的是实现一个接口,即所有的子类对外都呈现
一个相同名字的方法。
第5章 消息、继承与多态
抽象类是它的所有子类的公共属性的集合,是包含一个或
多个抽象方法的类。使用抽象类的一大优点就是可以充分利用
这些公共属性来提高开发和维护程序的效率。对于抽象类与抽
象方法的限制如下:
(1) 凡是用abstract
修饰符修饰的类被称为抽象类。凡是用
abstract修饰符修饰的成员方法被称为抽象方法。
(2) 抽象类中可以有零个或多个抽象方法,也可以包含非抽
象的方法。
第5章 消息、继承与多态
(3) 抽象类中可以没有抽象方法,但是,有抽象方法的类必
须是抽象类。
(4) 对于抽象方法来说,在抽象类中只指定其方法名及其类
型,而不书写其实现代码。
(5) 抽象类可以派生子类,在抽象类派生的子类中必须实现
抽象类中定义的所有抽象方法。
(6) 抽象类不能创建对象,创建对象的工作由抽象类派生的
子类来实现。
第5章 消息、继承与多态
(7) 如果父类中已有同名的abstract方法,则子类中就不能再
有同名的抽象方法。
(8) abstract不能与final并列修饰同一个类。
(9) abstract 不能与private ,static,final或native并列修饰同一
个方法。
(10) abstract 类中不能有private的数据成员或成员方法。
第5章 消息、继承与多态
【示例程序c5_18.java】 抽象类应用。
import java.awt.*;
import java.applet. *;
abstract class Shapes //定义一个抽象类Shapes
{
public int x,y; //x、y为画图的坐标
public int width,height;
public Shapes(int x,
您看到此篇文章时的感受是:
Tags: 责任编辑:administrator
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到QQ空间
分享到: 
上一篇成员方法 下一篇点击弹出窗口层,并且背景变暗渐变

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

相关栏目

最新文章

图片主题

热门文章

推荐文章

相关文章

广告位