日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

【JavaSE】接口

發(fā)布時(shí)間:2024/1/8 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【JavaSE】接口 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言:

作者簡(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)潔 }

注意:

  • 創(chuàng)建接口時(shí), 接口的命名一般以大寫字母 I 開(kāi)頭.
  • 接口的命名一般使用 "形容詞" 詞性的單詞.
  • 在接口中方法默認(rèn)修飾?public abstract,阿里編碼規(guī)范中約定, 接口中的方法和屬性不要加任何修飾符號(hào), 保持代碼的簡(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)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。