深入面向对象的程序设计分析报告.ppt
文本预览下载声明
第4章 深入面向对象的程序设计 4.1 Java的继承与多态 4.2 构造函数的继承与重载 4.3 Java的包 4.4 Java的接口 4.5 Java的异常处理 学习提要 1.熟练掌握继承关系的定义、属性的继承和隐藏、方法的继承与覆盖; 2.理解多态的含义和用法,包括方法的重载、构造函数的继承与重载、this与super、父类对象与子类对象的使用和转化; 3.掌握包的定义与使用方法; 4.熟悉接口与多重继承的关系、接口的定义和使用; 5.掌握异常的定义和使用方法。 4.1 Java的继承与多态 4.1.1 继承与多态的概念 (1)继承 继承是两个类(或接口)之间的一种关系,通过extends关键字来实现,被继承的类称为父类或超类,继承了父类的所有数据和操作的类称为子类。新定义的子类可以从父类继承所有非private的属性和方法作为自己的成员。一个父类可以同时拥有多个子类。 单重继承:任何一个类都只有一个单一的父类。 程序结构为树状,比较简单。 多重继承:一个类可以有一个以上的父类,其静态的 数据属性和操作从所有这些父类中继承。 程序结构为网状,比较复杂。 图 4.1 各种电话卡类及其间的继承关系 在面向对象的程序设计中,采用继承的机制来组织、设计系统中的类的优点: 可以提高程序的抽象程度,使之更接近于人类的思维方式; 使得程序结构清晰,降低编码和维护的工作量。 注意: (1)Java只支持单重继承,而采用接口来实现多重继承。 class subClass extends SuperClass implements interface1,interface2,…interfacen{//SuperClass和各个接口中的非private的属性和方法均被继承(实现)!} (2)而C++中一个类可以有多个父类。 (2)多态 多态是针对方法而言的,是指同名的方法具有多种表现形态。 实现多态的途径: 1)覆盖( override )——在子类中对从父类继承的方法进行改写。 2)重载( overload )——在同一个类中定义多个同名的方法。 比如,程序中定义多个名为 print方法,用来打印不同类型的数据,如字符型、数值型等。 区分同名方法的措施:采用不同的形式参数列表,包括形式参数的个数、类型、顺序的不同。 4.1.2 属性的继承与隐藏 (1)属性的继承:子类从父类继承属性而不是把父类属性的定义部分复制一遍,可以减少程序维护的工作量。 (2)属性的隐藏:对子类从父类继承来的属性变量重新加以定义。 即:子类定义了与父类同名的属性变量,即出现了子类变量对同名父类变量的隐藏。 如何区分: 子类执行从父类所继承的方法时,处理的是继承自父类的变量。 子类执行它自己定义的方法时,操作的是自己定义的变量,而把从父类继承的变量“隐藏”起来。 子类覆盖父类的方法时,要注意不能降低父类方法的访问权限!!!!!!! (1) class SuperClass {public void method1(){ } void method2(){ } } class SubClass extends SuperClass { void method1(){ } //降低了访问权限,不允许! public void method2() {} //提升了访问权限,允许! String toString() { return ““Hello,World!”; } //不允许! } 同一个类中方法重载时,要注意参数的类型、顺序、个数要体现不同!!!!!! 请分析以下程序段中的错误原因。 import java.util.*; class JustInOneClass { public void output(String str) {} public void output(Date date) {} public void output(Double d) {} public void output(int i) {} public void output(int j) {} public void output(float f) {} } 例: TestInherit.java //类的继承,属性的继承与隐藏 import java.util.*; public class TestInherit {
显示全部