1、接口的定义
接口就是某个事物对外公开的一些功能(操作、方法)的声明,接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。接口规定了对象间相互通信的规范(标准、契约)。
2、定义接口的语法
public interface 接口名[extends 接口列表]{ //一个接口也可以扩展其他接口
定义常量;
声明方法,接口默认所有方法都是public abstract的;
}
3、使用接口的语法
public class MyClass implements 接口1【,接口2, 接口3…..】 {
//实现接口中定义的方法
}
如:
public interface X {
public [abstract] void dox();
……
}
public interface Y {
public [abstract] void doy();
……
}
public interface Z {
public [abstract] void doz();
……
}
public class A implements X,Y,Z{
实现三个方法,只要有一个没实现,本类将是抽象类
}
a) 使用接口声明方法和常量,接口中的方法都是抽象方法和public的,也就是说不能有方法体。
b) 接口是更加抽象的抽象的类,接口里的所有方法都是抽象方法。接口体现了程序设计的多态和低偶合高内聚的设计思想。
4、接口的扩展语法
public interface Powered extends Moveable{
//额外加入更多的方法
}
5、类的改进
6、接口与抽象类的区别
a) abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。接口弥补了类的多继承问题。
b) 在abstract class 中可以有自己的数据成员,也可以有非abstract的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(即常量:也就是必须是static final的),所有的成员方法都是abstract的。
c) abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"概念,interface表示的是"has-a"概念
。 注意:当一个行为与一个类的所属行为方法不相关联时,应该采用接口来实现这个行为,不能使用抽象类,否则违反面向对象的ISP(Interface Segregation Principle)接口隔离原则和OCP(Open Close Principle)开闭原则。
d) 接口中的方法默认都是 public abstract的; 属性默认是public final static。
e) 不管是抽象类还是接口都可以实现多态性,开发设计中一般优先使用接口,其次才考虑抽象类和继承。