学完抽象类来学接口。
接口不是类,而是对类的一组需求描述。比如我们的鼠标,U盘全都有统一的USB接口。任何实现了某一接口的类,都必须实现该接口规定的方法,如果只实现了一部分,那么这个子类必须声明为抽象类,这点和抽象类一样。
示例代码。
public interface Comparable
{
int compareTo(Object other);
}
//实现
class Employee implements Comparable
{
public int compareTo(Object otherObject)
{
Employee other = (Employee) otherObject;
return Double.compare(salary, other.salary);
}
}
java中没有多继承的概念,为了实现多继承,引入了接口,可以同时实现多个接口。接口可以提供多继承的大多数好处,还能比秒多继承的复杂性和低效性。
之前认为接口中不能实现任何方法,现在增加了两种方法的实现。静态方法,和默认方法。静态方法就是static修饰的方法。默认方法是default修饰的方法。因为接口中的方法,我们可能只关注某几个实现。其它的可以不去实现它,直接使用接口中定义的默认方法。其次,默认方法方便兼容。如果接口中直接增加新特性。子类就会因为没有实现新方法而出错。但是如果增加的方法有默认实现,那么就能实现旧版代码的兼容。
如果现在一个接口中将一个方法定义为一个默认方法,然后又在超类或者另外的接口中定义了同样的方法,怎么做呢?
回调callback是一种常见的程序设计模式。在这种设计模式下,可以指出某个特定事件发生时应该采取的动作。比如用定时器定时地调用某个方法。因为java面向对象,所以传入的是对象。要求这个对象的类实现java.awt.event包的ActionListener接口。这样就可以使用java.swing包中的Timer类在给定时间执行这个方法。
不细讲了,用lambda表达式更容易实现。
原文:https://www.cnblogs.com/zuotongbin/p/11729253.html