接口
接口概述
- 接口是一種規范,使用接口就代表著要在程序中制定規范.
制定規范可以給不同類型的事物定義功能,例如:
- 利用接口,給飛機、小鳥制定飛行規范,讓其都具備飛行的功能;
- 利用接口,給鼠標、鍵盤、音響制定連接規范,讓其都具備連接的功能;
接口制定規范通常只規定有哪些功能,不限制功能的具體內容。需要由遵循規范的事物自己去實現,例如:
- 飛行規范只是讓飛機、小鳥具備飛行的功能,但具體怎么飛,由它們自己決定
- 連接規范只是讓鼠標、鍵盤、音響都擁有可以被連接的功能,但具體怎么連接,由它們自己決定
接口的定義格式
public interface Inter { // 常量// 抽象方法}
注意:
- 接口中的變量必須是常量,默認被 public static final 修飾
- 接口中的方法默認是抽象方法,默認被 public
abstract 修飾 - 接口不能創建對象
接口的使用方式
接口是用來被類實現(implements)的,實現接口的類稱為實現類。實現類可以理解成所謂的子類
- 接口可以被類單實現,也可以被類多實現
- 注意:一個類實現接口,必須重寫完全部接口的全部抽象方法,否則這個類需要定義成抽象類
修飾符 class 實現類 implements 接口1, 接口2, 接口3 , ... {……
}
接口和抽象類的區別
- 一個類只能繼承一個抽象類,一個類可以實現多個接口。
- 繼承父類和實現接口并不沖突,可以同時使用。
- 功能上:抽象類是對同一類型事物的抽取
(例如:貓和狗),接口是對不同類型事物具有相同行為的規范。
實例1:
public class Demo01 {public static void main(String[] args) {//需求:定義一個數學接口MathInter,給其定義成員變量PI(圓周率)和成員方法add(加法)//1.定義好接口后,嘗試創建MathInter對象,代碼報錯(接口不能創建對象)//new MathInter();//2.使用MathInter提供的圓周率System.out.println(MathInter.PI);//3.嘗試修改圓周率//MathInter.PI = 6.66;//4.要想使用接口,需要定義類去實現接口//定義Computer電腦類,實現Math數學接口//5.創建實現類對象,調用重寫的方法Computer computer = new Computer();computer.add(1, 2);//6.需求:再定義一個播放接口PlayerInter,制定播放規范,讓Computer去實現computer.play();}
}
public interface MathInter {//2.要求有圓周率提供給其他人使用//public static final double PI = 3.14;//注意:接口中的成員變量只能是常量,默認被 public static finaldouble PI = 3.14;//3.要求有加法//public abstract void add(int a, int b);//接口中的方法默認就被 public abstract修飾void add(int a, int b);
}
public interface PlayerInter {void play();
}
public class Computer implements MathInter, PlayerInter {//2.類實現接口,必須要重寫接口的所有抽象方法!@Overridepublic void add(int a, int b) {System.out.println("加法結果:" + (a + b));}@Overridepublic void play() {System.out.println("播放小視頻");}
}
實例二:
定義USB接口制定規范,要求所有USB設備都擁有接入(connect)和斷開(disconnect)功能
- 定義Mouse鼠標類和Keyboard鍵盤類,要求實現USB接口,遵循USB制定的規范
- Mouse鼠標的特有功能:點擊(click)
- Keyboard鍵盤的特有功能:打字( typewrite )
1.定義UsbInter接口,制定規則:接入(connect)和斷開(disconnect)
public interface UsbInter {void connect();void disconnect();
}
2.定義鼠標Mouse類和鍵盤Keyboard類作為接口實現類,重寫接口的方法
public class Keyboard implements UsbInter {@Overridepublic void connect() {System.out.println("接入鍵盤");}@Overridepublic void disconnect() {System.out.println("斷開鍵盤");}//2.特有功能:打字public void typewrite() {System.out.println("鍵盤敲爛,月薪過萬!");}
}public class Mouse implements UsbInter{@Overridepublic void connect() {System.out.println("鼠標連接");}public void Click(){System.out.println("鼠標點擊");}@Overridepublic void disconnect() {System.out.println("鼠標斷開");}}
3.分別創建Mouse鼠標對象和Keyboard鍵盤對象
public class Demo02 {public static void main(String[] args) {Mouse mouse = new Mouse();Keyboard keyboard = new Keyboard();//依次調用usb的接入方法、各自特有的方法、usb的斷開方法mouse.connect();mouse.click();mouse.disconnect();System.out.println("-----------------");keyboard.connect();keyboard.typewrite();keyboard.disconnect();}
}