Java中的接口可以被看作是
只包含常量和抽象方法的抽象类
。
可以使用如下方式定义一个接口:
public interface InterfaceDemo {
int i = 10;
void method1();
int method2();
}
使用1: 解决“多重继承”的问题
Java语言本身是不支持类的多重继承(多重继承是指一个类从多个类继承而来,即一个类拥有多个超类)的,但一个类却可以实现多个接口。这样,我们可以将一些抽象方法定义在接口中,间接地达到多重继承的目的。
例如:
- MyInterface1.java
public interface MyInterface1 {
void fly();
}
- MyInterface2.java
public interface MyInterface2 {
void walk();
}
- Bird.java
public class Bird implements MyInterface1, MyInterface2 {
private static final String TAG = "Bird";
@Override
public void fly() {
Log.i(TAG, "I can fly");
}
@Override
public void walk() {
Log.i(TAG, "I can walk");
}
}
使用2: 定义一个规范(协议)
同一个接口可以有多个不同的实现类,但每一个实现类都必须重写接口中所有的抽象方法。即接口不考虑这些实现类各自采用什么方式实现这些功能,但它要求所有的实现类都必须有这些功能。
例如:
首先定义一个计算器的接口:Calculator.java,所有实现该接口的类,都必须具有计算两个数相加、相减、相乘、相除的功能。
public interface Calculator {
/** 计算器可以计算两个数的和 */
int add(int a, int b);
/** 计算器可以计算两个数的差 */
int sub(int a, int b);
/** 计算器可以计算两个数的积 */
long mul(int a, int b);
/** 计算器可以计算两个数的商 */
float div(int a, int b);
}
再定义一个实现该