33
C6
接口与内部类
接口主要用来描述类具有什么功能,而并不给出每个功能的具体实现
一个类可以实现一个或多个接口,但只能继承一个父类。
33接口
接口是对垒的需求描述。
接口可以包含一个或多个方法
接口中还可以定义常量
接口可以看成没有实例域的抽象类
接口中所有方法都自动为public,但建议还是显示声明
34
数组的排序调用
Arrays.sort(arr)
35
Comparable接口
36
接口不是类,不能new实例化,但可以定义接口的类对象
接口可以继承接口
37.
接口与抽象类
(1)多继承概念
38 对象克隆
浅拷贝:默认的克隆,是浅拷贝
深拷贝:实现Cloneable接口,重新定义clone()方法
Cloneable:标记接口
39接口与回调。。
Timer定时器 原理
监听?
40 内部类
原因:
(1)内部类方法可以访问该类定义所在的作用于中的数据,包括私有数据
(2)内部类可以对同一个包中的其他类隐藏起来。
(3)当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类 比较便捷。
常规内部类:
class A{
private boolean field;
class AIn{
public void fun(){
//visitField(field)
}
}
}
只有内部类才能是私有类,否则其他的定义一个私有类没意义
内部类访问外部的域可以用outClass.this.field
外部类构造内部类对象: outClass.new InnerClass(xx)
局部内部类
写在方法里面
注意方法的参数 如果局部内部类要用到,则要用final修饰。
局部内部类不能用public or private访问说明符进行声明。
技巧
fun(final Integer a[])
变量要更新,不能声明为final,但是要能访问。用长度为1的数组。
匿名内部类:
只创建这个类的一个对象,不比命名了。
new Interface(){
method();
}
静态内部类
将内部类声明为static,取消产生的引用。
静态内部类的对象除了没有对生成它的外围类对象的引用特权,
41. 代理类
Proxy
invoke
InvocationHandler