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