java语言程序设计案例教程 (5)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第5章 类的继承
3. 访问控制 一个子类是不是可以访问父类的所有属性和方法呢? 当然不是。子类可以访问的父类成员属性和成员方法,决 定于父类成员属性和成员方法在定义时所加的访问控制符。 Java语言中成员的访问控制共有四种类型,除了前面章节 中已经介绍过的public和private修饰符外,还有protected修 饰符和默认访问状态。
第5章 类的继承
(1) public修饰符。public是公共的意思,被public修饰 的成员可以被所有类访问。
(2) private修饰符。类中被private修饰的成员,只能被 这个类本身访问,其他类(包括同一个包中的类、其他包中 的类和子类)都无法直接访问private修饰的成员。
(3) 默认访问状态。如果在类的成员前没有任何访问控 制符,则该成员属于默认访问状态(default)。处于默认访问 状态的成员,只能被同一个包中的其他类访问。因此,默认 访问状态的成员具有包可见性。
第5章 类的继承
5.1.1 继承的基本知识
1. 继承 在设计学生管理系统时,定义的学生类(Student)只要继 承人类(People)中已经定义的属性和方法,然后根据学生类 的特点,添加一些学生所特有的属性和方法即可。这样,就 可以简化学生类的定义,因为人类中已经定义好的属性和方 法通过继承后,学生类便可以自动拥有。再如,在另外一个 系统中,如果已经定义好了一个一般的汽车类,那么其他各 种类型的汽车(如轿车、计程车和巴士),都可以从汽车类中 继承有关属性和方法,如图5-1所示。
第5章 类的继承
图5-1 汽车类
第5章 类的继承
在图5-1中,汽车类包含了所有汽车具有的公共属性和 公共方法,再定义轿车类、计程车类和巴士类时,在这些类 中分别添加各自特有的属性和方法,即可完成不同汽车类的 定义。
图5-1中的汽车类在面向对象程序设计中叫超类、基类 或父类。在父类中,通常定义了一些通用的状态与行为。图 5-1中,不论轿车、出租车还是巴士,都是汽车,故属于汽 车类的一种,这些类都继承了汽车类的属性与行为。在面向 对象程序设计中,由继承而得到的类称为子类。
第5章 类的继承
图5-2 访问控制符示例
第5章 类的继承
one包中的类E定义如下: 01 //定义一个包one 02 //程序名为E.java 03 package one; 04 public class E{ 05 private int w = 1; 06 public int x = 2; 07 int y = 3; 08 protected int z = 4; 09 }
继承(inheritance)是一种由已有的类创建新类的机制, 通过继承可以实现类的复用。继承是面向对象程序设计 的主要特征之一。
第5章 类的继承
基本知识
5.1 类 的 继 承
在第1章的案例1-1程序中,定义了一个人类(People), 其中定义了人的姓名(name)和年龄(age)两个属性,并定义 了一个自我介绍的方法(introduceMyself)。现在,如果要开 发一个学生管理系统,就需要定义一个学生类(Student)。我 们知道,“学生也是人”,也就是说学生也具有人类的一 般特性,如也有姓名和年龄。那么在学生管理系统中,能 不能使用案例1-1中定义的人类来构建学生类呢?这就要使 用Java程序设计中的继承来实现。本节介绍有关类继承的基 本知识。
第5章 类的继承
(4) protected修饰符。如果要让子类能够访问父类的成 员,就要把父类的成员声明为protected。另外要注意,用 protected修饰的成员也可以被同一个包中的其他类访问。 在程序设计中,确定一个成员用什么访问控制符修饰,要 视具体情况而定。如果是类中对外提供的接口,就要使用 public修饰;如果是不希望被外界访问的成员变量和方法, 应当用private修饰;如果是子类中可以访问的成员,则要用 protected修饰;如果是该类所在包中的其他类可以访问的成 员,则要用默认访问状态(一个成员一般应尽量少用默认访 问状态)。
对上述访问控制符作用范围的总结如表5-1所示。
第5章 类的继承
表5-1 访问控制符的作用范围
访问修饰符
被本类访问
private
允许
默认访问状态(package) 允许
protected
允许
public
允许
被同一包中的 其他类访问 不允许
被不同包中 被不同包中的
的子类访问 非子类访问
不允许
不允许
允许
第5章 类的继承
第5章 类的继承
5.1 类的继承 5.2 属性的隐藏和方法的重写 5.3 类之间的层次结构 5.4 JCreater
第5章 类的继承
第5章 类 的 继 承
学习目标 掌握面向对象程序设计中继承的概念; 学会使用继承机制设计Java程序; 了解Java语言中类的层次结构; 掌握super关键字的使用方法; 理解继承机制在软件开发中的优点; 掌握JCreater编程工具的基本用法。
第5章 类的继承
2. 在程序中实现类的继承 在Java程序中,实现类的继承关系要使用extends关键 字。通过继承关系定义一个子类的一般格式是: class 子类名 extends 父类名 { 子类类体 } 创建的子类将会继承父类的属性和方法,此外,我们 还可以在子类中添加新的属性和方法。由于Java语言只支 持单继承,因此关键字extends后只能写一个父类名。
不允许
不允许
允许
允许
不允许
允许
允许
允许
第5章 类的继承
下面通过一个示例说明访问控制符的用法。如图5-2所 示,定义了两个包,包名分别为one和two,包one中有一个 类E,类E中定义了4个属性,分别用不同的访问控制符修饰。 包two中定义了4个类,类A中定义了4个具有不同访问控制 符修饰的属性,类B继承了同一个包中的类A,类C继承了 不同包中的类E,类D中定义了一个主方法main。
第5章Fra Baidu bibliotek类的继承
在使用继承机制设计程序时,可以先创建一个具有公 有属性的一般类,根据一般类再创建具有特殊属性的新类, 新类继承一般类的状态和行为,并根据需要增加它自己特 有的状态和行为。因此,可以通过继承实现类的复用,通 过类的复用来提高程序设计的效率。
注意:在Java语言中,不支持多重继承,即一个子类 只能有一个父类。