一,接口
1,接口概念
接口不是类,而是对类的一组需求描述。(一个类可以实现一个或多个接口 implement
接口中所有的方法自动属于public,不必提供关键字public。但是在实现接口时必须声明。
接口可以有一个或多个方法,可以定义常量,但是不能有实例域
让类实现一个接口:
将类声明为实现给定的接口(implements)
对接口的所有方法进行定义
2,接口的特性
接口不是类,不能用new实例化一个接口;
可以声明接口变量,但必须引用实现了接口的类对象;
接口与接口之间可以用extends继承;
接口中的域都会被自动设为public static final。
3,抽象类和接口
每个类只能有一个超类(java不允许多重继承),但可以实现多个接口。
允许在接口中增加静态方法。
4.默认方法可以为接口方法提供一个默认实现,也就说类实现的时候可以不实现这个方法
默认方法冲突:如果现在一个接口中将一个方法定义为默认方法,又在超类或者另一个接口中定义了同样的方法,会产生默认方法冲突,怎么解决:
i.超类优先(类优先原则)
ii.接口冲突,则覆盖超接口的方法
iii.继承了两个不同接口,里面有同样的方法,程序员需要解决这个二义性(也就是报错呗?)
二,接口示例
1,接口与回调
回调(callback)是一种常见的设计模式。
2,Comparable接口
3,对象clone
浅拷贝和深拷贝的区别:如果对象有子对象,继承Object的clone方法时,必须重新定义clone方法来建立一个深拷贝,以确保不仅拷贝对象和原对象有不同的引用,子对象也有不同的引用。