1.接口的基礎語法
使用關鍵字interface聲明一個接口。
接口體中的變量一定是static常量,方法一定是抽象方法,沒有實現。它們訪問權限是public。
類實現接口中的方法:使用關鍵字implements聲明該類實現一個或多個接口。
類在實現接口時不僅要去掉abstract修飾符、給出具體方法體,而且一定要用public來修飾。
定義接口時,如果關鍵字interface前面加上public關鍵字,就稱這樣的一個接口是一個public接口。public接口可以被任意一個類實現。如果一個接口不加public修飾,就稱作是友好接口,友好接口可以被與該接口在同一包中的類實現。
如果父類實現了某個接口,那麼子類也就實現了該接口,不必再特意使用implements聲明
接口也可以被繼承,即可以通過關鍵字extends聲明一個接口是另一個接口的子接口。子接口將繼承父類接口中的全部方法和常量。
2.接口回調
在Java語言中,接口回調是指:可以把實現某一接口的類創建的對象的引用賦值給該接口聲明的接口變量,那麼該接口就可以調用被類實現的接口方法。
實際上,當接口變量調用被類實現的接口方法時,就是通知相應的對象調用這個方法。
3.理解接口
接口可以抽象出重要的行爲標準,該行爲標準用抽象方法來表示。
可以把實現接口的類的對象的引用賦值給接口變量,該接口變量可以調用被該類實現的接口方法,即體現該類根據接口裏的行爲標準給出的具體行爲。
4.abstract類與接口的比較
-
abstract類和接口都可以有abstract方法。
-
接口中只可以有常量,不能有變量;而abstract類中既可以有常量,也可以有變量。
-
abstract類中也可以有非abstract方法,接口不可以。
-
一個類可以實現多個接口,但一個類只能繼承一個抽象類。所以使用接口可以間接地實現多重繼承。
-
接口被用於常用的功能,便於日後維護和添加刪除,而抽象類更傾向於充當公共類的角色,不適於日後重新對裏面的代碼修改。
-
功能需要積累時用抽象類,不需要積累時用接口
抽象類與接口的比較
課後習題
1.問答題
(1)不行
(2)不行
(3)接口的回調是指:將實現該接口方法的類的引用賦值給該接口聲明的接口型變量,以後該接口型變量可以直接調用實現該接口方法的類的方法。
(4)不行
(5)可以
2.選擇題
(1)D
(2)A、B
(3)A
3.閱讀程序
(1)15.0、8
(2)18.15
4.編程題
package practice_project;
interface Animal {
void cry();
String getAnimalName();
}
class Simulator {
void playSound(Animal animal) {
System.out.println(animal.getAnimalName()+"叫");
animal.cry();
}
}
class Dog implements Animal{
public void cry() {
System.out.println("汪汪汪");
}
public String getAnimalName() {
return "Dog";
}
}
class Cat implements Animal{
public void cry() {
System.out.println("喵喵喵");
}
public String getAnimalName() {
return "Cat";
}
}
public class Test{
public static void main(String args[]) {
Simulator simulator = new Simulator();
Animal animal;
simulator.playSound(new Dog());
simulator.playSound(new Cat());
}
}