什么是接口?接口也是一个特殊的抽象类
接口特点:
(1) 接口的关键字为 interface
public interface A { ... }
(2) 所有 属性 是公开静态的常量 public static final
(3) 所有 方法 是公开的抽象方法 public abstract
(4) 接口中没有构造方法
(5) 一个类只能继承一个直接的父类,但可以实现多个接口,
间接的实现了多继承。
public class A extends B implements C,D{ ... } //B为class。C,D为interface
代码例子:
//属性只能是 public static final //方法只能是 public abstract public interface A { public static final int a=1; int b=2; //默认为:public static final public abstract void init(); void init2(); //默认为:public abstract } //接口必须通过类来实现它的抽象方法,用 implements class B implements A { public void init() { ... } public void init2() { ... } } //一个类只能继承一个直接的父类,但可以实现多个接口,间接的实现了多继承 public class A extends B implements C,D{ ... } //B为class。C,D为interface。 . //----------------------------------------------------------- /* * 以下为一些接口定义中常见的问题 */ public interface C { int a; //错。a是常量,必须显示初始化 void method() { ... } //错。接口中只能包含抽象方法 public C() { ... } //错。接口中不能包含构造方法 } . interface D implements A{ ... } //错。一个接口不能实现(implements)另一个接口。 interface E extends A{ ... } //对。它可以继承多个其它的接口。 .
接口和抽象类的对比:
接口 | 抽象类 | |
属性 | 静态常量 |
一般变量 常量 静态变量 静态常量 |
方法 | 抽象方法 |
方法 静态方法 抽象方法 抽象静态方法 |
构造方法 | 不能有 | 可以有 |
关键字 |
interface
|
abstract |
继承字 | implements | extends |
继承关系 | like a | is a |