接口最關鍵的作用,也是使用接口最重要的一個原因:能上溯造型至多個基礎類。使用接口的第二個原因與使用抽象基礎類的原因是一樣的:防止客戶程序員制作這個類的一個對象,以及規定它僅僅是一個接口。這樣便帶來了一個問題:到底應該使用一個接口還是一個抽象類呢?若使用接口,我們可以同時獲得抽象類以及接口的好處。所以假如想創建的基礎類沒有任何方法定義或者成員變量,那麼無論如何都願意使用接口,而不要選擇抽象類。事實上,如果事先知道某種東西會成為基礎類,那麼第一個選擇就是把它變成一個接口。只有在必須使用方法定義或者成員變量的時候,才應考慮采用抽象類。
/**
* Created by xfyou on 2016/11/3.
* Java 繼承和接口演示
*/
public class Adventure {
static void t(CanFight x) {
x.fight();
}
static void u(CanSwim x) {
x.swim();
}
static void v(CanFly x) {
x.fly();
}
static void w(ActionCharacter x) {
x.fight();
}
public static void main(String[] args) {
Hero i = new Hero();
t(i);
u(i);
v(i);
w(i);
}
}
interface CanFight {
void fight();
}
interface CanSwim {
void swim();
}
interface CanFly {
void fly();
}
class ActionCharacter {
// 父類中實現了子類中繼承的接口方法
public void fight() {
}
}
/**
* 必須先 extends 然後再 impplements
*/
class Hero extends ActionCharacter implements CanFight, CanSwim, CanFly {
@Override
public void fly() {
}
@Override
public void swim() {
}
}