一、接口
(一)接口的定义
用来描述类具有什么功能,而不给出功能的具体实现。
interface InterfaceName
{
typenamefunction(…);
}
接口所有方法自动属于public,接口中的域自动设为publicstatic final
接口不能含有实例域(只是实例域不可以),不能实现方法
(二)接口的实现
类在实现接口时
1将类声明为实现给定的接口
2对接口中的所有方法进行定义
class ClassName implements InterfaceName
{
typenamefunction(…){ }
}
实现接口时,必须把实现的方法都标记为public,不然会被当作默认权限,而接口中自动为public,则实现的方法的权限小于接口的方法,会出错
(三)compareTo父子类型比较问题
Comparable中compareTo的方法,对于double类型不能用相减来快速得到。应当使用
Double.compare(x,y)
compareTo也可能像equals一样出现父子类型比较的问题。
因为子类扩展了超类,然而超类实现的是Comparable<FatherClass>,
如果子类需要覆盖compareTo,就需要考虑超类和子类对象进行比较的情况。不能仅仅将超类转换成子类(compareTo的参数需传入超类对象的情况)
解决办法:
1.若子类之间的比较含义不一样,必须先用
if(!(getClass()==other.getClass())) thrownew ClassCastException();
2若存在一种通用算法能够比较不同的子类对象,则应该在超类中提供这个方法并且声明为final
(四)接口特性
1不能用new实例化
2但是可以声明一个接口的对象变量
3但是接口的对象变量必须引用一个实现了接口的类的对象
4使用 instanceof检查一个类对象是否属于某个接口</