接口是一种特殊的抽象类
public interface Comparable<T>{} // 泛型类型接口
实现接口时, 要实现接口的所有方法
class Employee implements Comparable<Employee> {}
接口中可以包含常量, 但是不能包含实例域或静态方法.
对象克隆
Employee original = new Employee("John Public", 50000);
Employ copy = original; // 这句话并不是真正意义的克隆, 而是为堆内存中得对象增加了一个指向它的指针, 现在有两个指针指向它, original, copy
copy.raiseSalary(10);
Emloy copy = orginal.clone(); // 这样就在堆上又开辟了一块新内存, 并用指针 copy 指向这块内存.
不过事情没有那么简单, clone方法是Object类的一个protected方法, 也就是说, 在用户编写代码中不能直接使用它, 子类只能调用clone方法克隆它自己, 另外必须重新定义clone方法, 并将它声明为 public, 尽量不要使用克隆, 因为还有很多其他限制.
接口与回调
回调是一种常见的设计模式, 在这种模式中, 可以指出某个特定事件发生时应该采取的动作. 例如: 可以指出在按下鼠标或选择某个菜单项时应该采取什么行动
class TimePrinter implements ActionListener { public void actionPerformed(ActionEvent event) { Date now = new Date(); System.out.println("At the tone, the time is " + now); Toolkit.getDefaultToolkit().beep(); } }
Timer t = new Timer(10000, listener);
Timer 构造器第一个参数是时间间隔, 单位是毫秒, 第二个参数是监听器对象.
t.start(); 启动定时器
代理
代理可以在运行时创建一个实现了一组给定接口的新类, 这种功能只有在编译时无法确定需要实现哪个接口时才有必要使用, 对于应用程序设计人员来说, 遇到这种情况的机会很少.
果断先跳过, 以后需要再看.