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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

面向对象之接口——

發(fā)布時間:2024/1/8 编程问答 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面向对象之接口—— 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

閱讀指南

        • 前言
        • 接口
          • 接口的多態(tài)性
          • 抽象類和接口的異同
          • 接口的作用
          • 面向接口編程
        • 結(jié)語

前言

本篇我們介紹接口、接口的多態(tài)性以及接口的作用,然后淺淺提一下接口和抽象類的異同,最后我們介紹面向接口編程的思維。

接口

從程序設(shè)計的角度來說,接口是相關(guān)項目的不同軟件開發(fā)組開發(fā)的軟件之間相互交互的協(xié)議。比如在圖形軟件開發(fā)中,圖像處理公司為圖形軟件開發(fā)公司提供數(shù)字圖像處理方法,為協(xié)調(diào)兩個公司之間的軟件開發(fā)需要制定圖像處理的接口協(xié)議。在圖形軟件開發(fā)項目中,制定好圖像處理的接口后,圖像處理公司和圖形軟件開發(fā)公司可以獨立的并行開發(fā)各自的軟件項目。圖像處理公司可以方便的升級圖像處理包,圖形軟件開發(fā)公司可以使用不同的圖像處理公司提供的圖像處理包。

  • 普通類:只有具體實現(xiàn)

  • 抽象類:具體實現(xiàn)和規(guī)范(抽象方法)都有!

  • 接口:只有規(guī)范,自己不能寫方法。約束和實現(xiàn)分離。

說白了,接口就是規(guī)范,也就是定義了一組規(guī)則,體現(xiàn)了現(xiàn)實世界中“如果你是…,則必須能…”的思想。接口的本質(zhì)是契約,就像我們?nèi)碎g的法律一樣,制定好后大家都遵守。OO的精髓,是對對象的抽象,最能體現(xiàn)這一點的就是接口。 為什么我們討論設(shè)計,模式都只針對具備了抽象能力的語言(比如C++,Java,C#等),就是因為設(shè)計模式所研究的,實際上就是如何合理的去抽象。

聲明類的關(guān)鍵字是class,聲明接口的關(guān)鍵字是interface

接口的多態(tài)性

不同的類實現(xiàn)了相同的接口,不同類實現(xiàn)的接口的行為是不同的。程序設(shè)計中接口的多態(tài)性的實現(xiàn)是通過接口變量來實現(xiàn)的。把實現(xiàn)接口的類的對象賦值給接口變量,接口變量成為了一個上轉(zhuǎn)型對象,然后使用接口變量調(diào)用接口方法。接口指向不同類的對象時,其行為表現(xiàn)是不同的,這就是接口的多態(tài)性。

下面我們看一個例子:

public class Example04 {public static void main(String[] args) {//創(chuàng)建Speaker類的實例speakerSpeaker speaker = new Speaker();//speaker的方法makeSpeak的參數(shù)為接口類型的參數(shù),下面兩個分別是不同的對象(他們都實現(xiàn)了接口Speakable),接口指向不同類的對象時,其行為表現(xiàn)是不同的。這就是接口的多態(tài)性。speaker.makeSpeak(new Dog());speaker.makeSpeak(new Cat());} }class Speaker {public void makeSpeak(Speakable ispeak) { //接口類型參數(shù)ispeak.speak();} } //Dog實現(xiàn)接口 重寫speak方法 class Dog implements Speakable {@Overridepublic void speak(){System.out.println("Wang Wang Wang!");} } //Cat實接口 重寫speak方法 class Cat implements Speakable {@Overridepublic void speak(){System.out.println("Miao Miao Miao!");} }
抽象類和接口的異同

抽象類和接口都需要有具體的類去實現(xiàn)。在軟件世界中,抽象類和接口的使用場合是不同的。

從語法角度來說,

  • 抽象類有構(gòu)造方法,用于子類實例化使用;接口中沒有構(gòu)造方法
  • 抽象類中方法可以抽象也可以不抽象;接口的方法jdk1.7只能是抽象的。默認修飾符:public abstract(推薦:默認修飾符請自己永遠手動給出)
    jdk1.8可以寫以default和static開頭的具體方法
  • 接口中只可以有常量(默認修飾符:public static final),不可以有變量;abstract類中既可以有常量也可以有變量
  • 接口的作用
    • 1.本質(zhì)上也就是一種約束
    • 2.定義一些方法,讓不同的人實現(xiàn)
    • 3.接口里面的方法都是public abstract
    • 4.接口里面的常量都是public static final
    • 5.接口不能被實例化,接口中是沒有構(gòu)造器的
    • 6.可以實現(xiàn)多個接口,即接口可以多繼承,通過implements
    • 7.實現(xiàn)了接口的類,必須要重寫接口里面的方法
    面向接口編程

    在一個軟件項目的開發(fā)過程中,可以分成多個部分,然后共同完成。各個軟件開發(fā)組織之間只需要定義好各個軟件組成部分之間的交互接口,就可以并行獨立的完成各自的開發(fā)任務(wù)。例如自動駕駛項目。如下:

    public class Example05 {public static void main(String[] args) {AutoDriver driver = new AutoDriver();driver.drive(new BYD());driver.drive(new GL());} } class AutoDriver {public void drive(OperateCar icar) {//……icar.start();//…….} } interface OperateCar {// constant declarations, if any// method signatures//int turn(…);void start();// more method signatures } class BYD implements OperateCar{// the OperateCar method implementationpublic void start() {System.out.println("start BYD");}// other members, as needed } class GL implements OperateCar{// the OperateCar method implementationpublic void start() {System.out.println("start GL");}// other members, as needed }

    結(jié)語

    真正有光的人,壓的時間越久,深度越深,綻放的光芒才可以越燦爛。

    總結(jié)

    以上是生活随笔為你收集整理的面向对象之接口——的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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