一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Java中的接口及其應(yīng)用場景解讀

Java中的接口及其應(yīng)用場景解讀

2023-05-09 01:02未知服務(wù)器之家 Java教程

目錄 一、接口的特點(diǎn) 二、定義接口 1.interface關(guān)鍵字 2.implements關(guān)鍵字 三、應(yīng)用場景 1.接口表示規(guī)范 2.接口表示能力/行為 四、接口和類之間的關(guān)系 五、接口的命名規(guī)范 總結(jié) 一、接口的特點(diǎn) 1.如果一個抽象類中的所有方法都是抽象

目錄
  • 一、接口的特點(diǎn)
  • 二、定義接口
    • 1.interface關(guān)鍵字
    • 2.implements關(guān)鍵字
  • 三、應(yīng)用場景
    • 1.接口表示規(guī)范
    • 2.接口表示能力/行為
  • 四、接口和類之間的關(guān)系
    • 五、接口的命名規(guī)范
      • 總結(jié)

        一、接口的特點(diǎn)

        1.如果一個抽象類中的所有方法都是抽象的,則可以將這個類定義為Java中的另一種形式——接口。接口是一種特殊的抽象類,接口中只有全局常量和抽象方法,是一種更純粹的抽象概念。

        2.在JDK8中,對接口進(jìn)行了重新定義,接口中除了有抽象方法外,還可以有默認(rèn)方法和靜態(tài)方法;默認(rèn)方法可以被繼承和覆寫,靜態(tài)方法不能被繼承和覆寫。

        3.一般來說,接口的使用表示兩種場景:

        • ①接口表示具備某種能力/行為,子類實(shí)現(xiàn)接口是并不是is a關(guān)系,而是具備這種能力或行為
        • ②接口表示一種規(guī)范或者標(biāo)準(zhǔn)。

        4.在接口中,定義抽象方法時 public abstract關(guān)鍵字可以省略,定義全局常量時 static final可以省略。

        5.接口的子類可以實(shí)現(xiàn)多個父接口,接口也不能直接實(shí)例化對象,需要通過子類(普通類)向上轉(zhuǎn)型。

        6.接口和接口之間也可以是繼承關(guān)系,但是接口絕對不能繼承一個類。

        二、定義接口

        1.interface關(guān)鍵字

        與定義類不同的是,在定義接口的時候,不再使用class關(guān)鍵字,而是使用interface關(guān)鍵字來聲明。

        語法格式:修飾符 interface 接口名 { }

        創(chuàng)建一個USB接口,里面有兩個抽象方法

        代碼如下:

        public interface USB{
        //表示插入
        	public abstract void plugIn();
        //表示工作
        	public abstract void work();
        }

        2.implements關(guān)鍵字

        子類使用implements關(guān)鍵字來實(shí)現(xiàn)接口,必須覆寫接口中所有的抽象方法

        代碼如下:

        public class KeyBoard implements USB {
        	@Override
            public void plugIn() {
                System.out.println("安裝鍵盤驅(qū)動");
            }
            @Override
            public void work() {
                System.out.println("鍵盤正常工作");
            }
        }

        三、應(yīng)用場景

        1.接口表示規(guī)范

        USB接口表示一種規(guī)范,鼠標(biāo)鍵盤耳機(jī)等等這些外設(shè)都屬于USB接口的子類,我們在日常生活中使用電腦的時候,我們并不關(guān)心到底哪個具體設(shè)備插入了我們的電腦,只要這個設(shè)備滿足了USB接口,就都能被電腦識別并使用。

        就是說,一個接口,可以接受無數(shù)種設(shè)備,只要這個設(shè)備滿足USB接口,都可以插入電腦并被電腦識別。

        兼容所有的USB子類對象。

        public interface USB{
        //表示插入
        	public abstract void plugIn();
        //表示工作
        	public abstract void work();
        }
        public class Mouse implements USB{
            @Override
            public void plugIn() {
                System.out.println("安裝鼠標(biāo)驅(qū)動");
            }
            @Override
            public void work() {
                System.out.println("鼠標(biāo)正常工作");
            }
        }
        public class KeyBoard implements USB {
        	@Override
            public void plugIn() {
                System.out.println("安裝鍵盤驅(qū)動");
            }
            @Override
            public void work() {
                System.out.println("鍵盤正常工作");
            }
        }
        public class Camera implements USB{
            @Override
            public void plugIn() {
                System.out.println("安裝相機(jī)驅(qū)動中");
            }
            @Override
            public void work() {
                System.out.println("相機(jī)開始正常工作");
            }
        }
        //電腦這個類不是USB接口的子類,他是USB規(guī)范的使用者
        public class Computer {
            public static void main(String[] args) {
                Computer computer = new Computer();
                Mouse mouse = new Mouse();
                Keyboard keyboard = new Keyboard();
                Camera camera = new Camera();
                computer.fun(mouse);
                computer.fun(keyboard);
                computer.fun(camera);
            }
            /**
            *為什么此時fun方法的參數(shù)是USB usb呢?如果我們寫成fun(Mouse mouse),那么這個fun只能識別鼠標(biāo),其他的根本識別不了,我們得寫好多個方法去實(shí)現(xiàn)。
            *我們這里用他們共同的接口當(dāng)做參數(shù),這樣不管傳進(jìn)來的是什么設(shè)備,只要你實(shí)現(xiàn)了USB這個接口,那你就可以被識別
            *假設(shè)我們現(xiàn)在多了一個子類Earphone(耳機(jī))類,實(shí)現(xiàn)了USB接口,那我們的fun方法里一行多的代碼都不用寫,直接實(shí)例化對象,將引用名傳進(jìn)去就行。
            */
            public void fun(USB usb) {
                usb.plugIn();
                usb.work();
            }
        }

        2.接口表示能力/行為

        接口允許多實(shí)現(xiàn),一個類可以具備多個能力,同時實(shí)現(xiàn)多個父接口,若實(shí)現(xiàn)多個父接口,子類(普通類),必須覆寫所有的抽象方法。

        代碼如下:

        //游泳接口,表示具備游泳這個行為
        public interface ISwim {
        ? ? //可以省略public abstrac
        //public abstract void swim();
        ? ? void swim();
        }
        //具備跑這個行為
        public interface IRun {
        //可以省略public abstrac
        ? ? void run();
        //public abstract void run();
        }
        //表示能飛
        public interface IFly {
        //public abstract void fly();
        //可以省略public abstrac
        ? ? void fly();
        }
        //只具備跑的行為
        public class Rabbit implements IRun{
        ? ? @Override
        ? ? public void run() {
        ? ? ? ? System.out.println("兔子在跑~");
        ? ? }
        }
        //具備跑和游泳的能力
        public class Dog implements IRun,ISwim{
        ? ? @Override
        ? ? public void run() {
        ? ? ? ? System.out.println("狗子在跑~");
        ? ? }
        ? ? @Override
        ? ? public void swim() {
        ? ? ? ? System.out.println("狗子在游泳~");
        ? ? }
        }
        //三種能力都具備
        public class Duck implements IRun,ISwim,IFly{
        ? ? @Override
        ? ? public void fly() {
        ? ? ? ? System.out.println("鴨子在飛~");
        ? ? }
        ? ? @Override
        ? ? public void run() {
        ? ? ? ? System.out.println("鴨子在跑~");
        ? ? }
        ? ? @Override
        ? ? public void swim() {
        ? ? ? ? System.out.println("鴨子在游泳~");
        ? ? }
        }
        //定義一個測試類進(jìn)行測試
        public class Test {
        ? ? public static void main(String[] args) {
        ? ? ? ? IRun run = new Rabbit();
        ? ? ? ? IRun run1 = new Dog();
        ? ? ? ? ISwim swim = new Dog();
        ? ? ? ? IFly fly = new Duck();
        ? ? ? ? run.run();
        ? ? ? ? run1.run();
        ? ? ? ? swim.swim();
        ? ? ? ? fly.fly();
        ? ? }
        }

        運(yùn)行結(jié)果如下:

        Java中的接口及其應(yīng)用場景解讀

        五、接口的命名規(guī)范

        為了區(qū)分接口和類,命名使用 I 開頭,IRun,ISwim等等,子類實(shí)現(xiàn)一個接口時,命名以相應(yīng)的接口開頭,以impl結(jié)尾。

        例如:如果是IRun的子類,Runimpl(不是強(qiáng)制要求,但盡量做到)。

        如果子類實(shí)現(xiàn)多個父接口,不需要使用此規(guī)范來命名

        總結(jié)

        以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持。

        原文地址:https://blog.csdn.net/weixin_50262394/article/details/124631629

        延伸 · 閱讀

        精彩推薦
        主站蜘蛛池模板: 国产精品毛片无码 | 久久精品热在线观看85 | 91视频国产自拍 | 国产黑丝一区 | 校园春色自拍偷拍 | 日本在线www | 日韩经典在线观看 | 无限好资源免费观看 | 处女私拍 | 亚洲欧美视频在线播放 | 欧美人妖草草xxoo | 91久久偷偷做嫩草影院电 | 日本韩国无矿砖码 | 欧美一区不卡二区不卡三区 | heyzo1754北岛玲在线视频 | 亚洲不卡视频 | a优女网| 华人在线视频 | 精品久久成人免费第三区 | 婚前试爱全集免费观看 | 亚洲国产日韩欧美在线vip1区 | 黑人巨鞭大战白妞10级 | 国产成人亚洲影视在线 | 日韩一区二区不卡 | 国产91免费在线 | 鬼畜重口高h合集长短篇 | 久久成人伊人欧洲精品AV | 欧美在线一级片 | www.国产一区二区三区 | 国产一级视频久久 | 国产成人高清亚洲一区91 | 无码AV免费精品一区二区三区 | 美女扒开腿让男生桶爽漫画 | 91日本| chinese老太granny chinese国产人妖hd | 91人成网站色www | 国产精品亚洲片在线观看麻豆 | 国产播放器一区 | 亚洲精品二三区伊人久久 | 福利一区在线观看 | 日韩欧美中文在线 |