日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

【JavaSE】接口

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

前言:

作者簡介:愛吃大白菜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,代碼更簡潔 }

注意:

  • 創(chuàng)建接口時, 接口的命名一般以大寫字母 I 開頭.
  • 接口的命名一般使用 "形容詞" 詞性的單詞.
  • 在接口中方法默認修飾?public abstract,阿里編碼規(guī)范中約定, 接口中的方法和屬性不要加任何修飾符號, 保持代碼的簡潔性.
  • 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)容,希望文章能夠幫你解決所遇到的問題。

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