interface 關鍵字

2023/09/22閱讀時間約 3 分鐘

在Java中

所有被宣告在interface中的method都是public abstract

所以interface中的method才不需要特地標上修飾符abstract


interface只體現設計方向

而如何實現此設計

就由class去 implements 此interface以實際override(重寫)

在interface中宣告的variable,預設都是final且static的
所以必須要賦予初始值


class 可以 implements 多個 interface

如下程式部分,假如Animal 和 Human 兩個interface都有eat method

那麼class Japanese implements時重寫的eat method 會直接override兩者的eat 行為

所以不會有像extends 繼承時出現不知道該參照誰的method的狀況發生

interface Animal {

void canSpeak(boolean can);

void eat();
}

interface Human {

void speak();

void eat();
}

class Japanese implements Human, Animal {

@Override
public void canSpeak(boolean can) {
System.out.println(can ? "can speak" : "can not speak");
}

@Override
public void speak() {
System.out.println("speak in japanese");
}

@Override
public void eat() {
System.out.println("eat something");
}
}


public class Demo {
public static void main(String[] args) {

Japanese human = new Japanese();
human.canSpeak(true); // can speak
human.speak(); // speak in japanese
human.eat(); // eat something

Japanese human2 = new Japanese();
human.canSpeak(false); // can not speak
human.speak(); // speak in japanese
human.eat(); // eat something
}
}


interface 可以 extends interface

interface A 繼承 interface B

那麼 class C implements A時,就需要將interface A和B的所有method都重寫

不然就是在class C 前方加上 abstract關鍵字,表示我有method不想重寫(我並不完整)


我的Java學習日記
留言0
查看全部
發表第一個留言支持創作者!