第七章 面向对象高级特性
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JAVA编程基础
——面向对象高级特性东软人才实训中心
3 Sept. 2008
©Neusoft Confidential
第七章:面向对象高级特性目标:
介绍Java中类的继承,封装,
多态,方法的重载与覆盖。抽象类及接口的概念与使用。Java中的包及类路径。引用数据类型的转换。包装类。访问权限修饰符的使用。final关键字。教学方法:讲授ppt+上机练习
本章要点
•类的继承
9继承的规则
9子类的构造方法
9方法的覆盖
9final关键字
•接口
9接口的规范
9引用数据类型的转换
9多态
•Java中的包
9包和访问权限修饰符•类的封装
Contents
1
类的继承
2
接口
3
Java中的包
4
类的封装
类的继承
•类的继承
9在Java 中定义一个类时,让该类通过关键字extends 继承一个已有的类,这就是类的继承(扩展)。9被继承的类称为父类(超类,基类),新的类称为子类(派生类)。
9子类继承父类的所有属性和方法,同时也可以增加自己的属性和方法。
使用继承+getDetail()
+getSalary()
+vehicleAllowance()-name -birth
-salary
-department
Officer
类的继承
•继承的语法示例Employee.java Worker.java
[修饰符] class 子类名extends父类名
类的继承•继承的好处
¾使编码更高效
¾易维护
类的继承
•继承的规则
9Java中只支持单继承,也就是说每个类只能有一个父类,不允许有多重继承
9一个父类可以有多个子类
9子类继承父类所有的属性和方法,但不继承父类的构造方法
示例TestWorker.java
类的继承
•子类的构造方法—子类不能继承父类的构造方法
9使用默认的构造方法
9在子类中的创建构造方法示例Worker.java
¾在子类中创建构造方法时,必须调用父类的构造方法
¾子类可以在自己的构造方法中使用super关键字来调用父类的构
造方法
super (参数1,参数2,…);
¾如果使用super关键字调用父类构造方法,必须写在该子类构造
方法的第一行
¾如调用的是父类中无参的构造方法,则可以不写super( )
¾如果子类中调用了父类无参的构造方法,而父类中没有无参构
造方法则系统编译出错
类的继承
•方法的覆盖(override)
9重写(rewrite)
9对从父类中继承来的方法进行改造
9在子类继承父类时发生
•方法覆盖的规则
9在子类中的覆盖方法与父类中被覆盖的方法应具有
¾相同的方法名
¾相同的参数列表(参数数量、参数类型、参数顺序都要相同)
¾相同的返回值类型
¾子类覆盖方法的访问权限要不小于父类中被覆盖方法的访问权限
示例Worker.java
类的继承
•final关键字
9final可以修饰的元素:
¾类:不能被继承
¾变量(属性和局部变量):不能被重新赋值
–在声明时赋值,或在构造方法中赋值
–系统不会对final属性默认的赋初始值¾方法:不能在子类中被覆盖,即不能修改。
示例Final.java TestFinal.java
Contents
1
类的继承
2
接口
3
Java中的包
4
类的封装
•抽象方法
9只有方法声明,没有方法实现的方法
[访问权限修饰符]abstract 返回值类型抽象方法名(参数列表);
class A {
abstract int method1(int a, int b);
}
•抽象类
9抽象类是抽象方法和非抽象方法的集合
[访问权限修饰符]abstract class 类名{
……
}
9特殊情况
¾全部是抽象方法
¾全部为非抽象方法
abtract class A {
String name;
abstract int method1(int a, int b);
void sayHi( ){
System.out.println(“Hello!”);
}
•抽象类
9注意:
¾抽象类不能被实例化;
¾其包含的抽象方法必须在其子类中被实现,否则该子类只能声
明为abstract;
¾抽象方法不能为static;
9在下列情况下,一个类必须声明为抽象类:
¾当一个类的一个或多个方法是抽象方法时;
¾当类是一个抽象类的子类,并且没有实现父类的所有抽象方
法,即只实现部分;
¾当一个类实现一个接口,并且不能为全部抽象方法都提供实现
时;
•接口的声明示例AudioDevice.java VideoDevice.java 9接口是常量和抽象方法的集合,而没有变量和方法的实现[访问权限修饰符]interface 接口名{
接口的成员
}
9接口的成员:
¾常量(字段)
¾抽象方法