接口与内部类
接口
对类的一组需要描述,这些类要遵从接口描述的统一格式进行定义
接口的特性
- 1、接口中的方法自动地被设置为public
2、接口中的域被自动设为public static final - 为什么需要接口?每个类只能拥有一个超类,但却可以实现多个接口
接口与抽象类
- 为什么不用抽象类替代接口?每个类只能扩展一个类,但可以实现多个接口
对象克隆
拷贝与克隆
- 拷贝:拷贝一个对象,仅是拷贝了对象的引用
- 克隆:克隆一个对象,是完全copy一个对象
自带clone
- Employee copy = original.clone();
- copy.raiseSalary(10);
- 缺点:默认克隆操作是浅拷贝,它并没有克隆包含在对象中的内部对象
克隆:深拷贝
-
重新定义clone()
-
类implements Cloneable接口
- public class Employee implements Cloneable{
- …
…
-
使用public访问修饰符重新定义clone方法
- public Employe clone() throws CloneNotSupportedException{
- Employee cloned = (Employee) super.clone();
- cloned.hireDay = (Date) hireDay.clone();
- return cloned;
}
}
-
接口与回调
内部类
内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据
内部类可以对同一个包中的其他类隐藏起来
当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷
使用内部类访问对象状态
- 内部类的对象总有一个隐式引用,它指向了创建它的外部类对象
内部类的特殊语法规则
- ActionListener listener = this.new TimePrinter()
内部类是否有用、必要和安全
- 解释与常规调用类的方法的区别
局部内部类
- 在需要调用内部类的方法中实现内部类,此时内部类仅对该方法可见,无需声明为public或者private
由外部方法访问final变量
- 子主题 1