第六章 介面
一、小結
本章主要講解了介面,包括介面的簡介、定義介面、介面的繼承、介面的實現、介面與抽象類、介面的UML圖、介面的回撥、介面與多型、介面引數以及面向介面程式設計。通過對本章的學習,讀者應該熟練掌握定義介面、介面的繼承與實現、介面與抽象類、介面與多型和麵向介面程式設計,這些是本章的重點內容。
二、測驗
只能用public修飾介面
實現一個介面必須實現介面的所有方法,一個類可以實現多個介面,介面間可以有繼承關係(extends)
介面可以被實現也可以被繼承、多繼承,類不能實現多繼承,當子類繼承父類介面時,子類獲得父類的所有方法
三、習題
1、定義介面有什麼好處?
介面是一個特殊的抽象類,介面可以解除各個模組之間的耦合性,是多型的一種體現,通過介面可以實現具體的功能,提高工作效率。
2、介面是否可以被繼承?
可以
3、介面與抽象類有哪些共同點?
(1)介面與抽象類都不能被例項化,能被其他類實現和繼承
(2)介面和抽象類中都可以包含抽象方法,實現介面或繼承抽象類的普通子類都必須實現這些抽象方法。
4、 介面與抽象類有哪些差別?
(1)介面中只能包含抽象方法,不能包含普通方法;抽象類中可以包含普通方法。
(2)介面中不能定義靜態方法;抽象類中可以定義靜態方法。
(3)介面中只能定義靜態常量屬性,不能定義普通屬性;抽象類裡可以定義靜態常量屬性,也可以定義普通屬性。
(4)介面不能包含構造器;抽象類可以包含構造器,抽象類裡的構造器為了讓其子類呼叫並完成初始化操作。
(5)介面中不能包含初始化塊,但抽象類可以包含初始化塊。
(6)一個類最多隻能有一個直接父類,包括抽象類;但是一個類可以實現多個介面。
5、建立一個汽車介面,介面中要定義汽車應有的屬性和行為,然後編寫多個汽車介面的實現類,再建立一個主類,在主類中建立sell()銷售方法,該方法中包含汽車介面型別的引數。當執行該方法時,應該輸出傳遞給sell()方法的各種汽車物件的價格、顏色、型號等資訊。
首先建立介面:
public interface Car {
String getName();
String getColor();
double getPrice();
}
實現介面的類:
public class Audi implements Car{
public String getName() {
return "Q7";//return語句:雙引號
}
public String getColor() {
return "魔力黑";
}
public double getPrice() {
return 133.9;
}
}
public class BMW implements Car{
public String getName(){
return "寶馬7系";
}
public String getColor(){
return "雪晶白";
}
public double getPrice(){
return 270.35;
}
}
public class FourServiceShop {
public void sellCar(Car car){
System.out.println("您選擇的車型是:"+ car.getName()+",車的顏色是:"+car.getColor()+",價格是:"+car.getPrice()+"萬元");
}
public static void main(String[] args) {
FourServiceShop car =new FourServiceShop ();
car.sellCar(new BMW());//把建立的類當作介面引數代入
car.sellCar(new Audi());
}
}