PAGE5
《面向对象程序设计》教案
第16讲
教学对象
计算机科学技术专业
授课内容
6.5类的继承
课程标准
教学目标
(一)知识目标
掌握类继承的实现、方法覆盖
掌握super的使用
(二)能力目标
1.能够应用类、对象、封装、继承、多态等知识编写应用程序
2.能够掌握面向对象理论与方法,进行创新性的编程设计
教学方法
采用讲授法、演示法、讨论法、案例教学。
学时及分配(第1学时50分钟)
课堂讲授30分钟
课堂练习20分钟
6.5.1类继承的实现
6.5.2方法覆盖
学时及分配(第2学时50分钟)
课堂讲授20分钟
课堂练习30分钟
6.5.3super关键字
6.5.4调用父类构造方法
知识点分析
重点:
继承的实现
super关键字
难点:
方法重写
教学过程设计
内容
方式
问题导入
本节来学习继承及继承的实现、定义类的子类、如何覆盖超类的方法。
内容要点
6.5类的继承
在Java语言中,继承的基本思想是可以从已有的类派生出新类。不同的类可能会有一些共同的特征和行为,可以将这些共同的特征和行为统一放在一个类中,使它们可以被其他类所共享。
6.5.1类继承的实现
实现类的继承,使用extends关键字,格式如下:
[public]class子类名extends父类名{
//类体定义
}
这样声明后就说子类继承了超类或者说子类扩展了父类。如果父类又是其他类的子类,则这里的子类就为那个类的间接子类。
设现有Person类,要设计一个Employee类。因为Employee也是Person,那么就没有必要从头定义Employee类,可以继承Person类。因为Employee除具有人员Person的特征,还有一些自己的特征(如描述员工工资,计算工资的操作等)。程序6-7是Person类,程序6-8是Employee类表示员工。
【程序6-7】Person.java
packagecom.boda.xy;
publicclassPerson{
publicStringname;
publicintage;
publicPerson(){//无参构造方法
}
publicPerson(Stringname,intage){//带参数构造方法
=name;
this.age=age;
}
publicvoidsayHello(){
System.out.println(Hello,Mynameis+name);
}
}
有了Person类,我们定义Employee类时就可继承Person类,而不必再从头定义Employee类,代码如下。
【程序6-8】Employee.java
继承Person类packagecom.boda.xy;
继承Person类
salary表示员工工资,不必定义name和age,它们从父类继承来。publicclassEmployeeextendsPerson{
salary表示员工工资,不必定义name和age,它们从父类继承来。
publicdoublesalary;
//无参构造方法
publicEmployee(){
}
//带一个参数构造方法
publicEmployee(doublesalary){
this.salary=salary;
}
//带3个参数构造方法
调用父类构造方法publicEmployee(Stringname,intage,doublesalary){
调用父类构造方法
super(name,age);
this.salary=salary;
}
publicdoublecomputeSalary(inthours,doublerate){
这里计算员工的工资doublesalary=hours*rate;
这里计算员工的工资
returnthis.salary+salary;
}
}
这里Employee类继承或扩展了Person类,它成为Person类的子类,Person类成为Employee类的父类。
关于类继承的几点说明:
(1)子类继承父类中非private的成员变量和成员方法。例如,在Employee类中可以使用父类中继承来的name和age属性,还可以调