【JavaSE】接口
前言:
作者簡介:愛吃大白菜1132
人生格言:紙上得來終覺淺,絕知此事要躬行
?
如果文章知識點有錯誤的地方不吝賜教,和大家一起學(xué)習(xí),一起進步!
?
如果覺得博主文章還不錯的話,希望三連支持!
目錄
1.接口?
1.1接口的概念?
1.2語法規(guī)則?
1.3接口的使用
1.4接口的特性
?1.5實現(xiàn)多個接口
?1.6接口間的繼承
2.抽象類和接口的區(qū)別
1.接口?
1.1接口的概念?
????????概念:接口就是公共的行為規(guī)范標準,大家在實現(xiàn)時,只要符合規(guī)范標準,就可以通用。 在Java中,接口可以看成是:多個類的公共規(guī)范,是一種引用數(shù)據(jù)類型。?
1.2語法規(guī)則?
????????接口的定義格式與定義類的格式基本相同,將class關(guān)鍵字換成 interface 關(guān)鍵字,就定義了一個接口。
public interface 接口名稱{// 抽象方法public abstract void method1(); // public abstract 是固定搭配,可以不寫public void method2();abstract void method3();void method4(); // 注意:在接口中上述寫法都是抽象方法,更推薦方式4,代碼更簡潔 }注意:
1.3接口的使用
接口的使用方式:
用一個“實現(xiàn)類”來實現(xiàn)接口,重寫接口中所有的抽象方法。?
舉例:下方通過電腦為例。電腦輸入設(shè)備有鼠標、鍵盤等,輸入設(shè)備通過USB來與電腦交互,這就可以將USB?看作一個接口,讓鼠標和鍵盤是 implements USB實現(xiàn)交互。
USB接口代碼:
public interface IUSB {//打開USB接口void openUSB();//關(guān)閉USB接口void closeUSB(); }Computer類代碼:
package demo1;class Mouse implements IUSB{@Overridepublic void openUSB() {System.out.println("打開鼠標");}@Overridepublic void closeUSB() {System.out.println("關(guān)閉鼠標");} }class KeyBoard implements IUSB {@Overridepublic void openUSB() {System.out.println("打開鍵盤");}@Overridepublic void closeUSB() {System.out.println("關(guān)閉鍵盤");} }public class Computer {public static void main(String[] args) {//測試接口IUSB keyboard =new KeyBoard();keyboard.closeUSB();} }1.4接口的特性
1. 接口類型是一種引用類型,但是不能直接new接口的對象
public class Computer {public static void main(String[] args) {IUSB usb = new IUSB();} } // Error:(10, 19) java: day20210915.USB是抽象的; 無法實例化2. 接口中每一個方法都是public的抽象方法, 即接口中的方法會被隱式的指定為 public abstract。(只能是 public abstract,其他修飾符都會報錯)
3. 接口中的方法是不能在接口中實現(xiàn)的,只能由實現(xiàn)接口的類來實現(xiàn)。?
4. 重寫接口中方法時,不能使用默認的訪問權(quán)限?。
5. 接口中可以含有變量,但是接口中的變量會被隱式的指定為 public static final 變量?。
6. 接口中不能有靜態(tài)代碼塊和構(gòu)造方法。
7. 接口雖然不是類,但是接口編譯完成后字節(jié)碼文件的后綴格式也是.class。
8. 如果類沒有實現(xiàn)接口中的所有的抽象方法,則類必須設(shè)置為抽象類。
9. jdk8中:接口中還可以包含default方法。?
public interface IUSB {void openUSB();void closeUSB();default void func(){} }?1.5實現(xiàn)多個接口
????????在Java中,類和類之間是單繼承的,一個類只能有一個父類,即Java中不支持多繼承,但是一個類可以實現(xiàn)多個接口。就像一個人只能有一個父親,但他可以有多個干爹。
例子:通過動物來舉例,動物園里有許多動物,有鸚鵡,鯊魚,老虎,天鵝,他們分別有自己的本領(lǐng),鸚鵡會飛,鯊魚會游泳,老虎會奔跑,天鵝即會飛、游泳,又會奔跑。我們就將飛、游泳、奔跑寫作接口,讓他們一一的使用。
飛的接口:
package demo1;public interface IFlying {void fly(); }奔跑的接口:
package demo1;public interface IRuning {void run(); }游泳的接口:
package demo1;public interface ISwimming {void swim(); }動物園中的動物對這些接口的實際使用:
package demo1;class Animal {private String name;public Animal(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;} } //狗會跑 class Dog extends Animal implements IRuning{public Dog(String name) {super(name);}@Overridepublic void run() {System.out.println(super.getName()+"跑");} } //魚會游泳 class Fish extends Animal implements ISwimming{public Fish(String name) {super(name);}@Overridepublic void swim() {System.out.println(super.getName()+"游泳");} } //鳥會飛 class Bird extends Animal implements IFlying {public Bird(String name) {super(name);}@Overridepublic void fly() {System.out.println(super.getName()+"飛");} } //鴨子即會飛、游泳,又會奔跑 class Duck extends Animal implements IRuning,ISwimming,IFlying{public Duck(String name) {super(name);}@Overridepublic void fly() {System.out.println(super.getName()+"飛");}@Overridepublic void run() {System.out.println(super.getName()+"跑");}@Overridepublic void swim() {System.out.println(super.getName()+"游泳");} } public class Zoo {public static void main(String[] args) {} }以上的代碼展示了 Java 面向?qū)ο缶幊讨凶畛R姷挠梅? 一個類繼承一個父類, 同時實現(xiàn)多種接口
????????接口的作用就是將類的分類模糊化,舉個例子,上方接口有一個接口是跑,我們知道,不僅僅有動物能跑,我們汽車也可以跑,那么,定義一個汽車類,我們只需將跑這個接口對接到汽車類中,汽車也可以實現(xiàn)跑的功能。
?1.6接口間的繼承
????????在Java中,類和類之間是單繼承的,一個類可以實現(xiàn)多個接口,接口與接口之間可以多繼承。即:用接口可以達到 多繼承的目的。
interface IRunning {void run(); } interface ISwimming {void swim(); } // 兩棲的動物, 既能跑, 也能游 interface IAmphibious extends IRunning, ISwimming { }2.抽象類和接口的區(qū)別
核心區(qū)別: 抽象類中可以包含普通方法和普通字段, 這樣的普通方法和字段可以被子類直接使用(不必重寫), 而接口中不能包含普通方法, 子類必須重寫所有的抽象方法.?
總結(jié)
以上是生活随笔為你收集整理的【JavaSE】接口的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 未来,谁在革通信设备商的命?
- 下一篇: 多线程面试题_线程魔术技巧:使用Java