- 42
- 0
- 约6.33千字
- 约 38页
- 2018-11-29 发布于天津
- 举报
Java语言程序设计-类与对象
Method call binding 早绑定 vs. 晚绑定(动态/运行时刻) Case Study: Shapes.java Java中所有的绑定都是晚绑定,除了final的方法. final final : This cannot be changed ? final for data final for methods final for a class Final data 只能被赋值一次的变量 Case Study: FinalData.java Final methods 有两种 final 方法: 在方法上加一把锁,防止继承者改变它的意义。 编译器把对该方法的调用变成 inline 调用。 private is final. Final classes Final classes是不允许被继承的。 试讨论: ?Final fields in a final class? ?Final methods in a final class? 抽象类和抽象方法 一个类的作用仅仅是表达接口,而不是具体的实现细节 抽象的方法是不完全的,它只是一个申明,没有方法体. 包含一个抽象方法的类被称作抽象类,抽象类必须要用abstract声明. 不能制造抽象类的对象. 从抽象类继承的类必须override所有的抽象方法,否则它自己成为一个抽象类. 可以申明一个抽象类但是里面没有一个抽象方法. Case : Shapes2.java 抽象类与接口 * 接口是对abstract类的进一步扩展 接口中的方法都是未实现的(类似于抽象方法),目的是在实现接口的类之间建立一种协议 接口中的变量都是常量 定义 一个类符合某个或一组接口,利用implements [public] interface 接口名 { 成员变量; 方法声明; } class 类名 implements 接口1, 接口2 …… { … … … } 接口 实现interface 实现interface的类,其interface中所有的方法必须被“实现”,否则这个类成为一个抽象类。 所有实现interface中的方法必须被申明为public. Interface可以从多个interface得到继承,但是不能继承类. 一个类可以实现多个interface. An class implements an interface to have the interface. * 无修饰 但在实现接口方法的类中,修饰符为public interface Figure { double half=0.5,pi=3.14159; void parameter(); void area(); } class Triangle implements Figure { double b, h; Triangle (double u, double v) { b = u; h = v; } public void parameter() { System.out.println(b + “ “ + h); } public void area() { System.out.println(half*h*b); } } class Circle implements Figure { double x, y, r; Circle(double u, double v, double m) { x=u; y=v; r=m; } public void parameter() { System.out.println(x+“ “+y+“ “+r); } public void area() { System.out.println(pi*r*r); } } Triangle t = new Triangle(2, 3); Circle c = new Circle(4, 5, 6); Figure[] f = {t, c}; for (int i =0; i f.length; i++) { f[i].parameter(); f[i].area(); } 4、接口方法 练习 1、关于被私有访问控制符private修饰的成员变量,以下说法正确的是 (A)可被三种类引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类 (B)可以被两种类访问和引用:该类本身、该类的所有子类 (C)只能被该类自身所访问和修改 (D)只能被同一个包中的类访问 2、下列代码是否存在问题? public class Test { l
原创力文档

文档评论(0)