Ⅰ 面向對象程序設計的三大特徵是什麼
面向對象程序設計的三大特徵是多態(Polymorphism)、繼承(Inheritance)、封裝(Encapsulation)。
1、多態
多態核心的思想就是,父類的引用能夠指向子類的對象,或者介面類型的引用能夠指向實現該介面的類的實例。多態會這樣的原因是因為子類就是父類。
2、繼承
Java是單繼承的,這一點和C++有所不同,這也就意味著,一個類只能繼承於一個類,被繼承的類叫父類,或者是叫基類baseclass,繼承的類叫子類。
Java當中的繼承使用關鍵字extends。可是,一個類能夠實現多個介面,多個介面之間用逗號進行分割。實現介面使用關鍵字implements。
3、封裝(Encapsulation)
封裝比較的簡單,類包含了方法和數據,將方法和數據放在一個類當中,就構成了封裝。封裝的優點:將變化隔離,便於使用,提高重用性,提高安全性;封裝的缺點:將變數等使用private修飾,或者封裝進方法內,使其不能直接被訪問,增加了訪問步驟與難度!
面向對象程序設計的六大基本原則:
1、單一職責原則
不要存在多於一個導致類變更的原因,即一個類只承擔一個職責。
2、開放-封閉原則
對擴展開放,對修改封閉。無論模塊多麼封閉,都會存在一些無法對之封閉的變化,既然不能完全封閉,我們必須對於自己設計的模塊應該對哪種變化封閉做出選擇,必須先猜測出最有可能發生的變化種類,然後構造抽象來隔離這些變化。
3、迪米特原則
一個對象應該對其他對象有最少的了解,減少類與類之間的耦合。如果兩個類不必彼此通信,那麼這兩個類就不應當發生直接的相互作用。類與類之間的耦合越弱,越有利於復用,一個處於弱耦合的類被修改,不會對有關系的類造成波及。
4、依賴倒轉原則
上層模塊不要依賴底層模塊,它們都要依賴於抽象。抽象不能依賴於細節,細節要依賴於抽象。面向介面編程,不要面向實現編程。
5、里氏替換原則
子類型必須能夠替換掉它們的父類型。只有當子類可以替換掉父類,軟體單位的功能不受影響時,父類才能真正的被復用,而子類也能夠在父類的基礎上增加新的行為。
6、介面隔離原則
客戶端不應該依賴於它不需要的介面,一個類對一個類的依賴應該建立在最小的介面上。不要讓與自己無關的修改影響到自己功能模塊的變化。
Ⅱ 哪些是面向對象程序設計的三大特徵
封裝性、繼承性、多態性。
1、封裝性:
具備封裝性(Encapsulation)的面向對象編程隱藏了某一方法的具體運行步驟,取而代之的是通過消息傳遞機制發送消息給它。封裝是通過限制只有特定類的對象可以訪問這一特定類的成員,而它們通常利用介面實現消息的傳入傳出。
通常來說,成員會依它們的訪問許可權被分為3種:公有成員、私有成員以及保護成員。有些語言更進一步:Java可以限制同一包內不同類的訪問;C#和VB.NET保留了為類的成員聚集准備的關鍵字:internal(C#)和Friend(VB.NET);Eiffel語言則可以讓用戶指定哪個類可以訪問所有成員。
具備封裝性(Encapsulation)的面向對象程序設計隱藏了某一方法的具體執行步驟,取而代之的是通過消息傳遞機制傳送消息給它。
2、繼承性:
繼承性是面向對象技術中的另外一個重要特點,其主要指的是兩種或者兩種以上的類之間的聯系與區別。繼承,顧名思義,是後者延續前者的某些方面的特點,而在面向對象技術則是指一個對象針對於另一個對象的某些獨有的特點、能力進行復制或者延續。
如果按照繼承源進行劃分,則可以分為單繼承(一個對象僅僅從另外一個對象中繼承其相應的特點)與多繼承(一個對象可以同時從另外兩個或者兩個以上的對象中繼承所需要的特點與能力,並且不會發生沖突等現象)。
如果從繼承中包含的內容進行劃分,則繼承可以分為四類,分別為取代繼承(一個對象在繼承另一個對象的能力與特點之後將父對象進行取代);
包含繼承(一個對象在將另一個對象的能力與特點進行完全的繼承之後,又繼承了其他對象所包含的相應內容,結果導致這個對象所具有的能力與特點大於等於父對象,實現了對於父對象的包含)、受限繼承、特化繼承。
3、多態性:
從宏觀的角度來講,多態性是指在面向對象技術中,當不同的多個對象同時接收到同一個完全相同的消息之後,所表現出來的動作是各不相同的,具有多種形態。
從微觀的角度來講,多態性是指在一組對象的一個類中,面向對象技術可以使用相同的調用方式來對相同的函數名進行調用,即便這若干個具有相同函數名的函數所表示的函數是不同的。
(2)面向對象的編程方式以下哪些特點擴展閱讀:
面向對象編程語言
支持部分或絕大部分面向對象特性的語言即可稱為基於對象的或面向對象的語言。Simula(1967)被視為第一個具有面向對象特性的語言。早期,完全面向對象的語言主要包括Smalltalk等語言,目前較為流行的語言中有Java、C#、Eiffel等。
隨著軟體工業的發展,比較早的面向過程的語言在近些年的發展中也紛紛吸收了許多面向對象的概念,比如C→C++,C→Objective-C,BASIC→Visual Basic→Visual Basic .NET,Pascal→Object Pascal,Ada→Ada95。
「純粹」的面向對象語言, 因為所有的東西都是由對象所組成,例如:Eiffel,Emerald,JADE,Obix,Ruby,Scala,Smalltalk,Self。
腳本中的OOP
近年來,面向對象的程序設計越來越流行於腳本語言中。Python和Ruby是創建在OOP原理的腳本語言,Perl和PHP亦分別在Perl 5和PHP 4時加入面向對象特性。
Ⅲ 面向對象方法的主要特徵有哪些
面向對象方法的主要特徵有:
1、封裝性
封裝是一種信息隱蔽技術,它體現於類的說明,是對象的重要特性。封裝使數據和加工該數據的方法(函數)封裝為一個整體,以實現獨立性很強的模塊,使得用戶只能見到對象的外特性(對象能接受哪些消息,具有那些處理能力),而對象的內特性(保存內部狀態的私有數據和實現加工能力的演算法)對用戶是隱蔽的。
2、繼承性
繼承性是子類自動共享父類之間數據和方法的機制。它由類的派生功能體現。一個類直接繼職其它類的全部描述,同時可修改和擴充。
3、多態性
對象根據所接收的消息而做出動作。同一消息為不同的對象接受時可產生完全不同的行動,這種現象稱為多態性。利用多態性用戶可發送一個通用的信息,而將所有的實現細節都留給接受消息的對象自行決定,如是,同一消息即可調用不同的方法。
(3)面向對象的編程方式以下哪些特點擴展閱讀
面向對象方法的優越性
(1)強調從現實世界中客觀存在的事物(對象)出發來認識問題域和構造系統,這就使系統開發者大大減少了對問題域的理解難度,從而使系統能更准確地反映問題域。
(2)運用人類日常的思維方法和原則(體現於OO方法的抽象、分類、繼承、封裝、消息通訊等基本原則)進行系統開發,有益於發揮人類的思維能力,並有效地控制了系統復雜性。
(3)對象的概念貫穿於開發過程的終,使各個開發階段的系統成分具良好的對應,從而顯著地提高了系統的開發效率與質量,並大大降低系統維護的難度。
(4)對象概念的一致性,使參與系統開發的各類人員在開發的各所段具有共同語言,有效地改善了人員之間的交流和協作。
(5)對象的相對穩定性和對易變因素隔離,增強了系統的應變能力。
(6)對象類之間的繼承關系和對象的相對獨立性,對軟體復用提供了強有力的支持。