华北电力大学教学用-03-面向对象技术试卷.ppt
文本预览下载声明
* * * * * * * * * 指代调用这个方法的当前对象 * * 指代调用这个方法的当前对象 * * NCEPU 最终类与抽象类 1. 最终类 是指不能被继承的类,即最终类不能有它的子类。 格式: final class 最终类名 {……} 例如: final class C1 class C2 extends C1 ? 非法,不能为最终类的子类 NCEPU 最终方法 也可以用final修饰最终方法,即不能被覆盖的方法。格式为: final 返回类型方法名(参数表){…} 用final修饰的变量(简单类型)为常量,企图在程序中改变常量的值会引起编译错误。 final void m3() NCEPU 最终类 要说明的是:若将一个对象(引用类型变量)标记成final,则该对象不能再指向其他对象,但它所指向的内容的取值可以改变。 // 出现编译错误 class Car{ int number = 1234; } class FinalVariable { public static void main (String args[ ]) { final Car mycar = new Car ( ) ; mycar.number = 8888; mycar = new Car ( ); } } NCEPU final--小结 final变量的值不能被改变 final的成员变量 final的局部变量 final的方法不能够被重载 final的类不能够被继承 NCEPU final 修饰符 final 类不能被继承 子类不能重写方法 变量只能被赋值一次 NCEPU 抽象类 2.抽象类在程序设计过程中,有时需要创建某个类代表一些基本行为,并为其定义一些方法,但是又无法或不宜在这个类中就对这些行为加以实现,而希望在其子类中再去实现这些方法。 NCEPU 抽象类 这种定义了方法但是没有定义具体实现的类称为抽象类,只标注了存在而没有实现的成员方法称为抽象方法。Java是用abstract来说明抽象类和抽象方法的。 抽象方法必须被子类的方法覆盖,要注意的是,构造方法不能声明为抽象的。 NCEPU class Animal{ private String name; Animal(String name) {this.name=name;} public void enjoy() {System.out.println(“叫声……”);} // public abstract void enjoy(); } class Dog extends Animal{ private String furColor; Dog(String n,String c) {super(n); furColor =c;} public void enjoy(){ System.out.println(“狗叫声……”); } } class Monkey extends Animal{……} 定义一个抽象类Shape, 目的并不是为了在程序 中创建并操作对象,而 是为了定义几何形状类 体系的通用接口,如: draw()等,这些接口 在Shape类中不需要给出 具体实现,而由它的各 个子类提出自己的实现。 ? abstract class Animal { private String name; Animal(String name) {this.name = name;} public abstract void enjoy(); } NCEPU NCEPU 抽象类 任何包含抽象方法的类必须声明为抽象类,抽象类是不能直接实例化。例如: abstract class D1 class D2 extends D1 D2 vd2 = new D2 ( ) D1 vd1 = new D1() 注意:一个类不能既是最终类又是抽象类,即关键字final和abstract不能合用。 另:static和abstract也不能同时存在 ? NCEPU 求若干个圆和矩形的面积之和。 两个类Circle和Rectangle,完成相关参数的计算。 抽象类的应用 class Circle { public float r; //圆的半径 Circle(f
显示全部