什么是接口?接口也是一个特殊的抽象类
接口特点:
(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 |
转载于:https://blog.51cto.com/shahdza/1355338