33-關鍵字:interface
interface:介面
1.使用說明:
* 1.介面使用interface來定義
* 2.Java中,介面和類是並列的兩個結構
* 3.如何定義介面:定義介面中的成員
* 3.1 JDK7及以前:只能定義全域性常量和抽象方法
* >全域性常量:public static final的.但是書寫時,可以省略不寫
* >抽象方法:public abstract的方法,但是書寫時,可以省略不寫
* 3.2 JDK8:除了定義全域性常量和抽象方法之外,還可以定義靜態方法、預設方法
* 4. 介面中不能定義構造器的!意味著介面不可以例項化
* 5. Java開發中,介面通過讓類去實現(implements)的方式來使用.
* 如果實現類覆蓋了介面中的所抽象方法,則此實現類就可以例項化
* 如果實現類沒覆蓋介面中所的抽象方法,則此實現類仍為一個抽象類
* 6. Java類可以實現多個介面 --->彌補了Java單繼承性的侷限性
* 格式:class AA extends BB implements CC,DD,EE
* 7. 介面與介面之間可以繼承,而且可以多繼承
* 8. 介面的具體使用,體現多型性
*9. 介面,實際上可以看做是一種規範
2.舉例:
1 class Computer{
2 public void transferData(USB usb){//USB usb = new Flash();
3 usb.start();
4 System.out.println("具體傳輸資料的細節");
5 usb.stop();
6 }
7 }
8
9 interface USB{
10 //常量:定義了長、寬、最大最小的傳輸速度等
11 void start();
12 void stop();
13 }
14
15 class Flash implements USB{
16 @Override
17 public void start() {
18 System.out.println("U盤開啟工作");
19 }
20
21 @Override
22 public void stop() {
23 System.out.println("U盤結束工作");
24 }
25 }
26
27 class Printer implements USB{
28 @Override
29 public void start() {
30 System.out.println("印表機開啟工作");
31 }
32
33 @Override
34 public void stop() {
35 System.out.println("印表機結束工作");
36 }
37 }
體會:
* 1.介面使用上也滿足多型性
* 2.介面,實際上就是定義了一種規範
* 3.開發中,體會面向介面程式設計!
3.體會面向介面程式設計的思想
面向介面程式設計:我們在應用程式中,呼叫的結構都是JDBC中定義的介面,不會出現具體某一個資料庫廠商的API。
4.Java8中關於介面的新規範
//知識點1:介面中定義的靜態方法,只能通過介面來呼叫。
//知識點2:通過實現類的物件,可以呼叫介面中的預設方法。
//如果實現類重寫了介面中的預設方法,呼叫時,仍然呼叫的是重寫以後的方法
//知識點3:如果子類(或實現類)繼承的父類和實現的介面中聲明瞭同名同參數的預設方法,那麼子類在沒重寫此方法的情況下,預設呼叫的是父類中的同名同參數的方法。-->類優先原則
//知識點4:如果實現類實現了多個介面,而這多個介面中定義了同名同參數的預設方法,
//那麼在實現類沒重寫此方法的情況下,報錯。-->介面衝突。
//這就需要我們必須在實現類中重寫此方法
//知識點5:如何在子類(或實現類)的方法中呼叫父類、介面中被重寫的方法
public void myMethod(){
method3();//呼叫自己定義的重寫的方法
super.method3();//呼叫的是父類中宣告的
//呼叫介面中的預設方法
CompareA.super.method3();
CompareB.super.method3();
}
5.面試題:
抽象類和介面的異同?
相同點:不能例項化;都可以包含抽象方法的。
不同點:
1)把抽象類和介面(java7,java8,java9)的定義、內部結構解釋說明
2)類:單繼承性
介面:多繼承
類與介面:多實現