Java语言程序设计 教学课件 ppt 作者 汪远征 周巧婷 ch6

上传人:E**** 文档编号:89243037 上传时间:2019-05-21 格式:PPT 页数:96 大小:376.01KB
返回 下载 相关 举报
Java语言程序设计 教学课件 ppt 作者 汪远征 周巧婷 ch6_第1页
第1页 / 共96页
Java语言程序设计 教学课件 ppt 作者 汪远征 周巧婷 ch6_第2页
第2页 / 共96页
Java语言程序设计 教学课件 ppt 作者 汪远征 周巧婷 ch6_第3页
第3页 / 共96页
Java语言程序设计 教学课件 ppt 作者 汪远征 周巧婷 ch6_第4页
第4页 / 共96页
Java语言程序设计 教学课件 ppt 作者 汪远征 周巧婷 ch6_第5页
第5页 / 共96页
点击查看更多>>
资源描述

《Java语言程序设计 教学课件 ppt 作者 汪远征 周巧婷 ch6》由会员分享,可在线阅读,更多相关《Java语言程序设计 教学课件 ppt 作者 汪远征 周巧婷 ch6(96页珍藏版)》请在金锄头文库上搜索。

1、第6章 面向对象的程序设计,6.1 面向对象技术的特性,面向对象程序设计是一种先进的编程思想,更加容易解决复杂的问题。面向对象系统最突出的特性是封装性、继承性和多态性。,6.1 面向对象技术的特性,6.1.1 封装性 封装就是将数据和对数据的操作集合放在一起,形成一个能动的实体,即对象,用户不必知道对象行为的实现细节,只需根据对象提供的外部特性接口访问对象既可。从用户的观点来看,这些对象的行为就像包含在一个“黑匣子”中,是隐蔽的,看不见的。它体现了信息隐藏原则。 封装实际上就是使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。,6.1 面向对象技术的特性,6.1.2 继承性 继承

2、关系要涉及两个类:父类和子类。继承就是子类利用父类中定义的方法和变量就像它们属于子类本身一样。 子类除了包含父类的特征外, 它还拥有新的特征, 并且子类也可以对父类的特征进行重新定义。继承可分为单继承和多继承,在单继承中,一个类最多有一个直接父类;而在多继承中,一个类可以有多个直接父类;在Java中只有单继承。,6.1 面向对象技术的特性,6.1.3 多态性 多态性是指“多种形式”:使用不同的实例而执行不同操作。多态包括方法重写和方法重载。 方法重写是指在子类中重新定义父类中已有的方法,而方法的重载是指在同一个类中至少有两个方法用同一个名字,但有不同的参数。,6.2 类的继承性,继承是一种由已

3、有的类创建新类的机制。利用继承,可以先创建一个共有属性的一般类,根据该一般类再创建具有特殊属性的新类。新类继承一般类的状态和行为,并根据需要增加它自己的新的状态和行为。 由继承而得到的类称为子类,被继承的类称为父类。 Java不支持多重继承,即子类只能有一个父类。,6.1 面向对象技术的特性,6.2.1 多态性 通过使用关键字extends来声明一个子类,其格式为: class 子类名 extends父类名 子类体 例如学生Student类继承了人员Person类 【例6-1】定义Person类的子类:学生类Student。,6.1 面向对象技术的特性,6.2.2 子类的继承性 子类继承父类的

4、成员变量作为自己的成员变量,就好像它们是在子类中直接声明一样,可以被子类的任何实例方法操作; 子类继承父类的方法作为子类的方法,就好像他们是在子类中直接声明一样,可以被子类的任何对象调用。,6.1 面向对象技术的特性,6.2.2 子类的继承性 (1) 子类和父类在同一个包中的继承性 如果子类和父类在同一个包中,那么子类自然地继承了其父类不是private的成员变量和方法分别作为自己的成员变量和方法,继承的成员变量和方法的访问权限保持不变。,6.1 面向对象技术的特性,6.2.2 子类的继承性 (2) 子类和父类不在同一个包中的继承性 如果子类和父类不在同一个包中,那么子类继承父类的protec

5、ted、public成员变量和方法分别作为自己的成员变量和方法,继承的成员变量和方法的访问权限保持不变。,6.1 面向对象技术的特性,6.2.3 成员变量的隐藏和方法重写 子类可以隐藏继承的成员变量。由于子类可以从父类继承成员变量,只要子类中定义的成员变量和父类的成员变量同名时,子类就隐藏了继承的成员变量。即子类方法操作的与父类同名的成员变量是指子类中重新声明定义的这个成员变量。,6.1 面向对象技术的特性,6.2.3 成员变量的隐藏和方法重写 子类可以隐藏已继承的方法。子类通过方法重写来隐藏继承的方法。方法重写是指:子类中定义一个方法,其名字、返回类型、参数个数和类型与从父类继承的方法完全相

6、同。子类通过方法重写可以把父类的状态和行为变为自身的状态和行为。,6.1 面向对象技术的特性,6.2.3 成员变量的隐藏和方法重写 如果父类的方法f可以被子类继承,子类就有权利重写f,一旦子类重写了父类的方法f,就隐藏了继承的方法f,子类对象调用方法f必是调用重写的方法f。重写的方法既可以操作继承的成员变量,也可以操作子类声明定义的成员变量。,6.1 面向对象技术的特性,6.2.3 成员变量的隐藏和方法重写 【例6-2】成员变量的隐藏和方法重写举例。 编写父类代码: 编写子类代码: 在包“ch6”中创建一个可视类Ex6_2,在程序界面中添加一个按钮,为按钮添加事件代码如下:,6.1 面向对象技

7、术的特性,6.2.3 成员变量的隐藏和方法重写 【例6-2】成员变量的隐藏和方法重写举例。 程序运行结果如图6-1所示。 图6-1 调用成员方法 注意,重写父类的方法时,不可以降低方法的访问权限。,6.1 面向对象技术的特性,6.2.4 super关键字 当子类隐藏了从父类继承而来的成员变量或方法时,可以使用关键字super来调用被子类隐藏的父类的成员变量或方法。,6.1 面向对象技术的特性,6.2.4 super关键字 (1) 使用super调用父类的构造方法 子类不继承父类的构造方法,因此如果子类想使用父类的构造方法,必须在子类的构造方法中使用,并且必须使用关键字super来表示,而且su

8、per必须是子类构造方法中的头一条语句。例如在下面的代码中,子类B类的构造函数中调用了父类A类的构造函数。,6.1 面向对象技术的特性,6.2.4 super关键字 (1) 使用super调用父类的构造方法 需要注意的是,如果在子类的构造方法中,没有使用关键字super调用父类的某个构造函数,那么默认调用父类的不带参数的构造函数,即有 super();,6.1 面向对象技术的特性,6.2.4 super关键字 (1) 使用super调用父类的构造方法 如果类里定义了一个或多个构造函数,那么Java不提供默认的构造函数(不带参数的构造函数),因此,当在父类中定义多个构造函数时,应当包括一个不带参

9、数的构造方法,以防子类省略super时出现错误。,6.1 面向对象技术的特性,6.2.4 super关键字 (2) 使用super操作被隐藏的成员变量和方法 如果在子类中想使用被子类隐藏的父类的成员变量或方法就可以使用关键字super。例如在上例中,在B类中所调用的super.f()即是调用被隐藏的A类中的方法f()。,6.1 面向对象技术的特性,6.2.5 成员的访问控制 封装是把数据和操作它的代码包装在一起。封装还提供了另一个重要的属性:访问控制。通过封装,可以控制一个程序的哪个部分可以访问类的成员;通过访问控制,可以防止误用的情况发生。,6.1 面向对象技术的特性,6.2.5 成员的访问

10、控制 Java提供了很多访问控制符。访问控制的某些方面是与继承或包相关的。Java的访问控制符包括private、protected和public。Java也定义了默认的访问级别。只有当涉及继承时,protected才适用。表6-1说明了这些访问控制符所允许被访问的范围。,6.1 面向对象技术的特性,6.2.5 成员的访问控制 表6-1 成员的访问控制说明 下例简单地说明了private和默认访问控制的使用。,6.1 面向对象技术的特性,6.2.5 成员的访问控制 【例6-3】Point点类中的private和默认访问控制。 说明: 1) 执行程序,Eclipse系统提示出现错误,如图6-2所

11、示。,6.1 面向对象技术的特性,6.2.5 成员的访问控制 【例6-3】Point点类中的private和默认访问控制。,6.1 面向对象技术的特性,6.2.5 成员的访问控制 【例6-3】Point点类中的private和默认访问控制。 说明: 将两行错误代码删去或注释掉, 则程序执行正确 2) 一个类中的实例方法总是可以操作该类中的成员变量; 3) 静态方法总是可以操作该类中的静态变量,与访问控制符无关。,6.3 类的多态,6.3.1 成员方法重载 方法重载体现了面向对象系统的多态性。方法重载是指一个类中可以有多个方法具有相同的方法名,但这些方法的参数必须不同,或参数的个数不同,或参数的

12、类型不同。 需要注意的是方法的返回类型和参数名不参与比较。下述代码为各种类型数据相加方法的重载:,6.3 类的多态,6.3.2 构造方法重载 构造方法也可以重载。如点类Point的构造函数: Point() this.x = 0; this.y = 0; Point(int x, int y) this.x = x; this.y = y; ,6.4 final关键字,final的中文含义是:最终的、不能改变的,final关键字可以修饰类、成员变量和方法中的参数。 6.4.1 final类 被final关键字修饰的类称为final类,final类不能被继承,即不能有子类。如: final cl

13、ass A ; A就是一个final类。有时候出于安全性考虑,将一些类修饰为final类。,6.4 final关键字,6.4.2 final方法 例如String类,它对于编译器和解释器的正常运行有很重要的作用,对它不能轻易地改变,因此它被修饰为final类。 如果一个方法被修饰为final方法,则这个方法不能被重写。被关键字final修饰的方法有时被用于优化。编译器能产生直接对方法调用的代码,而不是通常涉及运行时查找的虚拟方法调用。,6.4 final关键字,6.4.3 final变量 如果一个成员变量被修饰为final,则它将成为常量,常量必须赋给初值,而且不能再发生变化。定义final变

14、量的例子: final double PI = 3.1415926; 如果方法的参数被修饰为final,则该参数的值不能被改变。 下面的代码说明了final关键字使用的几种情况:,6.4 final关键字,6.4.3 final变量 class Circle / final double PI; / 非法,因为没有赋初值 final double PI = 3.1415926; double getAera(final double r) / r = 314; / 非法,r值不能改变 return PI*r*r; ,6.5 abstract关键字,Java使用关键字abstract来修饰一个类

15、或者方法,用abstract修饰的类表示该类为抽象类,抽象类不能被实例化。用abstract修饰的方法称为抽象方法,抽象方法只有方法声明,而没有方法的实现。,6.5 abstract关键字,Java使用关键字abstract来修饰一个类或者方法, 用abstract修饰的类表示该类为抽象类, 抽象类不能被实例化。 用abstract修饰的方法称为抽象方法,抽象方法只有方法声明,而没有方法的实现。,6.5 abstract关键字,抽象类有如下特点: (1) 抽象类中可以有抽象方法 与普通的类相比,抽象类可以有抽象方法。对于抽象方法,只允许声明,不允许实现,而且不允许使用final修饰抽象方法。,

16、6.5 abstract关键字,下面的A类中的min()方法是抽象方法: abstract class A abstract int min(int x, int y); int max(int x, int y) return xy?x: y; 注意,抽象类也可以没有抽象方法。,6.5 abstract关键字,(2) 抽象类不能用new关键字创建对象 对于抽象类,不能使用new运算符创建该类的对象,需产生其子类,由子类创建对象。如果一个类是抽象类的子类,它必须具体实现父类的抽象方法。 一个抽象类只关心它的子类是否具有某种功能,并不关心功能的具体行为,功能的具体行为由子类负责实现,抽象类中的抽象方法可以强制子类必须给出这些方法的具体实现。,6.6 接口,Java不支持多重继承,即一个类只能有一个父类。单继承性使得Java简单,易于管理程序。为了克服单继承的缺点,Java使用了接口,一个类可以实现多个接口。 接口是抽象类的变体,在接口中,所有方法都是抽象的。,6.6 接口,6.6.1 接口的声明 接口的定义和类的定

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号