當前位置:編程學習大全網 - 編程語言 - 關於java面向對象編程和面向接口編程區別

關於java面向對象編程和面向接口編程區別

Struggle說得對。根本不是壹個層次的東西。“面向對象思想”和“面向過程思想”相對,而“針對接口(抽象)編程”和“針對實現編程相對”。首先糾正樓主壹個認識誤區,任何編程思想都是在試圖建立現實世界和計算機世界的“映射”。無論是面向過程還是面向對象或者是其它的什麽思想,根本目的都是在計算機中建立現實世界的模型,通過模型的“沙盤推演”,達到解決現實問題的目的。宏觀上說,無論是面向對象還是面向過程,都是壹種世界觀,是壹種對世界的認知和劃分。只不過面向過程的思想把世界劃分為數據結構和函數,而面向對象的思想把世界劃分為對象和方法。相對於面向過程的思想而言,面向對象思想和現實世界的“映射”更容易建立,所以現在面向過程的思想已經逐漸被面向對象的思想所取代(但是這絕不是說面向對象思想可以完全取代面向過程的思想)。c語言是面向過程思想的典範,而面向對象的思想的代表編程語言有Java和C++等(切忌語言和語法規則服務於編程思想)。任何的編程語言只是編程思想得以實現的載體。

面向接口編程本身是面向對象編程思想所提倡的壹種編程規範。因為它能夠最大限度的解耦,所謂解耦既是解耦合的意思,它和耦合相對。耦合就是聯系,耦合越強,聯系越緊密。在程序中緊密的聯系並不是壹件好的事情,因為兩種事物之間聯系越緊密,妳更換其中之壹的難度就越大,擴展功能和debug的難度也就越大。舉個硬件例子,道理和軟件相同

軟盤妳知道吧,骨灰級的存儲工具,最初是3.5英寸的,後來變成了2.5英寸,無論哪壹種,都采用軟驅中的磁頭讀取軟盤上的數據,而且存儲能力都小得可憐,現在妳已經很難再見到它們了。後來出現了光盤,工作原理和軟盤相似,但是傳輸速度和存儲容量都大大超過軟盤。遺憾的是軟驅是無法讀取光盤的,硬件制造商不得不提供光驅來替代軟驅。今天既是壹個不懂電腦的人,也不會利用軟驅讀取光盤?為什麽呢?起碼軟盤和光盤的直徑就不壹樣,塞不進去,然而妳不這麽做根本原因不是因為它太過匪夷所思,而是軟驅和軟盤的緊密“耦合”使得軟驅只能用來讀取軟盤。但是USB接口則不同,Intel睿智的設計者們提出了這種傳輸接口,它幾乎能夠接駁幾乎所有妳想得到的輸入輸出設備,現在無論妳接駁的是外置的USB光驅,還是USB軟驅,甚至是最新的比USB產生還要晚的面部識別系統他都恩那個夠正常工作,硬件制造商們不需要再去費腦筋提出更新的“X驅”了。什麽原因呢?因為USB接口是針對抽象“接口”設計的松耦合設備,USB接口的提供端並不知道也不需要知道接口的另壹端是鼠標、鍵盤、攝像頭還是其它的什麽設備,它對任何傳輸進來的數據都采用相同的處理規則,管妳是什麽,妳符合USB的傳輸方式我就支持妳。這樣妳可以任意更換USB的另壹端設備,而且妳驚奇的發現他們都能夠正常工作!軟件編程也是壹樣,Java類庫中這樣的例子太多。比如Arrays.sort()方法,該方法是壹個排序方法,需要利用Compareble接口的compareTo()方法,但是compareTo()方法沒有任何實現,它需要妳自己去編寫,這是合理的因為計算機並不知道如何比較妳定義的數據(是字典排序字符,還是大小排序阿拉伯數字或者其它的什麽方式)。那就只好交給妳自己來編寫,sort方法是壹個針對抽象接口Compareble編程的方法。,該方法只是專註於采用哪種排序方式,是冒泡排序還是快速排序,而不考慮具體兩個對象的比較方式。具體的妳最好看看api。總結壹下針對接口編程給編寫程序最大限度的解耦合,提供了最大的擴展性。它使得整個程序,不會因為局部的更改(無論是因為修正錯誤還是提供功能的擴展),而“牽壹發而動全身”,造成整個軟件必須重新編寫。

  • 上一篇:開著寶馬X5、奔馳ML的土豪老板,開100多萬的車,真的有必要嗎?
  • 下一篇:在編程貓學院編程跑酷遊戲
  • copyright 2024編程學習大全網