面向對象的編程語言有哪些特點
❶ 哪些是面向對象程序設計的三大特徵
封裝性、繼承性、多態性。
1、封裝性:
具備封裝性(Encapsulation)的面向對象編程隱藏了某一方法的具體運行步驟,取而代之的是通過消息傳遞機制發送消息給它。封裝是通過限制只有特定類的對象可以訪問這一特定類的成員,而它們通常利用介面實現消息的傳入傳出。
通常來說,成員會依它們的訪問許可權被分為3種:公有成員、私有成員以及保護成員。有些語言更進一步:java可以限制同一包內不同類的訪問;C#和VB.NET保留了為類的成員聚集准備的關鍵字:internal(C#)和Friend(VB.NET);Eiffel語言則可以讓用戶指定哪個類可以訪問所有成員。
具備封裝性(Encapsulation)的面向對象程序設計隱藏了某一方法的具體執行步驟,取而代之的是通過消息傳遞機制傳送消息給它。
2、繼承性:
繼承性是面向對象技術中的另外一個重要特點,其主要指的是兩種或者兩種以上的類之間的聯系與區別。繼承,顧名思義,是後者延續前者的某些方面的特點,而在面向對象技術則是指一個對象針對於另一個對象的某些獨有的特點、能力進行復制或者延續。
如果按照繼承源進行劃分,則可以分為單繼承(一個對象僅僅從另外一個對象中繼承其相應的特點)與多繼承(一個對象可以同時從另外兩個或者兩個以上的對象中繼承所需要的特點與能力,並且不會發生沖突等現象)。
如果從繼承中包含的內容進行劃分,則繼承可以分為四類,分別為取代繼承(一個對象在繼承另一個對象的能力與特點之後將父對象進行取代);
包含繼承(一個對象在將另一個對象的能力與特點進行完全的繼承之後,又繼承了其他對象所包含的相應內容,結果導致這個對象所具有的能力與特點大於等於父對象,實現了對於父對象的包含)、受限繼承、特化繼承。
3、多態性:
從宏觀的角度來講,多態性是指在面向對象技術中,當不同的多個對象同時接收到同一個完全相同的消息之後,所表現出來的動作是各不相同的,具有多種形態。
從微觀的角度來講,多態性是指在一組對象的一個類中,面向對象技術可以使用相同的調用方式來對相同的函數名進行調用,即便這若干個具有相同函數名的函數所表示的函數是不同的。
(1)面向對象的編程語言有哪些特點擴展閱讀:
面向對象編程語言
支持部分或絕大部分面向對象特性的語言即可稱為基於對象的或面向對象的語言。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.在設計模式上.面向對象可以更好的實現開-閉原則.也使代碼更易閱讀.
❸ 試述面向過程的編程語言和面向對象的編程語言的概念、特點和區別。
在面向過程程序設計中,問題被看作一系列需要完成的任務,函數則用於完成這些任務,解決問題的焦點集中於函數。它的主要觀點是採用自頂向下、逐步求精的程序設計方法,使用三種基本控制結構構造程序,即任何程序都可由順序、選擇、循環三種基本控制結構構造。
面向對象語言(Object-Oriented Language)是一類以對象作為基本程序結構單位的程序設計語言,指用於描述的設計是以對象為核心,而對象是程序運行時刻的基本成分。語言中提供了類、繼承等成分,有識認性、多態性、類別性和繼承性四個主要特點。
兩者區別:
(1)從設計思路來看。
面向過程:程序設計的重點是分析解決問題的步驟,以及完成步驟的流程,是一種結構化自上而下的程序設計方法。
面向對象:程序設計的重點是把構成問題的事物分解成對象,從局部著手,通過迭代的方式逐步構建出整個程序,是一種以數據為核心,以類設計為主的自下而上的程序設計方法。
(2)從適用范圍來看。
面向過程:由於不涉及實例化對象等操作,程序性能更高,開銷更少,因此像切入式等對資源要求較高的系統大多都採用面向過程開發。
面向對象:由於其抽象、封裝、繼承、多態的特性,使得系統具有更好的擴展性、維護性、復用性,對於功能復雜且維護成本較高的系統採用面向對象的開發。
(3)從代碼復用來看。
二者都可以實現代碼復用,但是面向過程主要是函數,而面向對象主要是類。
(3)面向對象的編程語言有哪些特點擴展閱讀:
由於面向過程的編程語言對解題過程的描述採用了比較接近人們習慣的方式,因而易學、易懂、易使用,是用戶廣泛使用的一類程序設計語言。這類語言的代表有ALGOL,FORTRAN,COBOL,PL/1,PASCAL和ADA等。
❹ 面向對象程序設計具有哪些特性呢
面向對象程序設計有4個主要特點,分別是:抽象、封裝、繼承、多態。以下是具體解釋;
一、抽象和封裝
類和對象體現了抽象和封裝
抽象就是解釋類與對象之間關系的詞。類與對象之間的關系就是抽象的關系。一句話來說明:類是對象的抽象,而對象則是類得特例,即類的具體表現形式。
封裝兩個方面的含義:一是將有關數據和操作代碼封裝在對象當中,形成一個基本單位,各個對象之間相對獨立互不幹擾。二是將對象中某些屬性和操作私有化,已達到數據和操作信息隱蔽,有利於數據安全,防止無關人員修改。把一部分或全部屬激銷性和部分功能(函數)對外界屏蔽,就是從外界(類的大括弧之外)看不到,不可知,這就是封裝的意義。
二、繼承
面向對象的繼承是為了軟體重用,簡單理解就是代碼復用,把重復使用的代碼精簡掉的一種手段。如如碰何精簡,當一個類中已經有了相應的屬性和操作的代碼,而另一個類當中也需渣鉛談要寫重復的代碼,那麼就用繼承方法,把前面的類當成父類,後面的類當成子類,子類繼承父類,理所當然。就用一個關鍵字extends就完成了代碼的復用。
三、多態
沒有繼承就沒有多態,繼承是多態的前提。雖然繼承自同一父類,但是相應的操作卻各不相同,這叫多態。由繼承而產生的不同的派生類,其對象對同一消息會做出不同的響應。
❺ 面向對象得三大特徵
面向對象程序設計的三大特點是封裝、繼承和多態。�0�2面向對象程序設計中的基本概念
「面向對象」作為一個術語,在不同的人群中有著不同的解釋。因此,了解一些在面向對象程序設計中廣泛應用的概念是必須的。本節我們討論以下這些內容:
1、對象(Object)
2、類(Class)
3、數據抽象(Data abstraction)
4、繼承(Inheritance)
5、動態綁定(Dynamic binding)
6、數據封裝(Data encapsulation)
7、多態性(Polymorphism)
8、消息傳遞(Message passing)
對象
在一個面向對象的系統中,對象是運行期的基本實體。它可以用來表示一個人或者說一個銀行帳戶,一張數據表格,或者其它什麼需要被程序處理的東西。它也可以用來表示用戶定義的數據,例如一個向量,時間或者列表。在面向對象程序設計中,問題的分析一般以對象及對象間的自然聯系為依據。如前所述,對象在內存中佔有一定空間,並且具有一個與之關聯的地址,就像Pascal中的record和C中的結構一樣。
當一個程序運行時,對象之間通過互發消息來相互作用。例如,程序中包含一個「customer」對象和一個「account」對象,而customer對象可能會向account對象發送一個消息,查詢其襲晌察銀行帳目。每個對象都包含數據以及操作這些數據的代碼。即使不了解彼此的數據和代碼的細節,對象之間依然可以相互作用,所要了解的只是對象能夠接受的消息的類型,以及對象返回的響應的類型,雖然不同的人會以不同的方法實現它們。
類
我們剛才提到,對象包含數據以及操作這些數據的代碼。一個對象所包含的所有數據和代碼可以通過類來構成一個用戶定義的數據類型。事實上,對象就是類類型(class type)的變數。一旦定義了一個類,我們就可以創建這個類的多個對象,每個對象與一組數據相關,而這組數據的類型在類中定義。因此,一個類就是具有相同類型的對象的抽象。例如,芒果、蘋果和桔子都是fruit類的對象。類是用戶定義的數據類型,但在一個程序設計語言中,它和內建的數據類型行為相同。比如創建一個類對象的語法和創建一個整數對象的語法一模一樣。如果fruit被定義為一個類,那麼語句
fruit mango;
就創建了一個fruit類的對象mango。
數據抽象和封裝
把數據和函數包裝在一個單獨的單元(稱為類)的行為稱為封裝。數據封裝是類的最典型特點。數據不能被外界訪問,只能被封裝在同一個類中的函數訪問。這些函數提供了對象數據和程序之間的介面。避免數據被程序直接訪問的概念被稱為「數據隱藏」。
抽象指僅表現核心的特性而不描述背景細節的行為。類使用了抽象的概念,並且被定義為一系列抽象的屬拍茄性如尺寸、重量和價格,以及操作這些屬性的函數。類封裝了將要被創建的對象的所有核心屬性。因為類使用了數據抽象的概念,所以它們被稱為抽象數據類型(ADT)。
封裝
封裝機制將數據和代碼捆綁到一起,避免了外界的干擾和不確定性。它同樣允許創建對象。簡單的說,一個對象就是一個封裝了數據和操作這些數據的代碼的邏輯實體。
在一個對象內部,某些代碼和(或)某些數據可以是私有的,不能被外界訪問。通過這種方式,對象對內部數據提供了不同級別的保護,以防止程序中無關的部分意外的改變或錯誤的使用了對象的私有部分謹橡。
繼承
繼承是可以讓某個類型的對象獲得另一個類型的對象的屬性的方法。它支持按級分類的概念。例如,知更鳥屬於飛鳥類,也屬於鳥類。就像圖5中描繪的那樣,這種分類的原則是,每一個子類都具有父類的公共特性。
在OOP中,繼承的概念很好的支持了代碼的重用性(reusability),也就是說,我們可以向一個已經存在的類中添加新的特性,而不必改變這個類。這可以通過從這個已存在的類派生一個新類來實現。這個新的類將具有原來那個類的特性,以及新的特性。而繼承機制的魅力和強大就在於它允許程序員利用已經存在的類(接近需要,而不是完全符合需要的類),並且可以以某種方式修改這個類,而不會影響其它的東西。
注意,每個子類只定義那些這個類所特有的特性。而如果沒有按級分類,每類都必須顯式的定義它所有的特性。
多態
多態是OOP的另一個重要概念。多態的意思是事物具有不同形式的能力。舉個例子,對於不同的實例,某個操作可能會有不同的行為。這個行為依賴於所要操作數據的類型。比如說加法操作,如果操作的數據是數,它對兩個數求和。如果操作的數據是字元串,則它將連接兩個字元串。
圖6演示了一個函數處理不同數量、不同類型的參數。就像某個單詞在不同的上下文中具有不同的含義。
多態機制使具有不同內部結構的對象可以共享相同的外部介面。這意味著,雖然針對不同對象的具體操作不同,但通過一個公共的類,它們(那些操作)可以通過相同的方式予以調用。多態在實現繼承的過程中被廣泛應用。
面向對象程序設計語言支持多態,術語稱之為「one interface multiple method(一個介面,多個實現)」。簡單來說,多態機制允許通過相同的介面引發一組相關但不相同的動作,通過這種方式,可以減少代碼的復雜度。在某個特定的情況下應該作出怎樣的動作,這由編譯器決定,而不需要程序員手工干預。
在多函數程序中,許多重要的數據被聲明為全局變數,這樣它們才可以被所有的函數訪問。每個函數又可以具有它自己的局部變數。全局變數很容易被某個函數不經意之間改變。而在一個大程序中,很難分辨每個函數都使用了哪些變數。如果我們需要修改某個外部數據的結構,我們就要修改所有訪問這個數據的函數。這很容易導致bug的產生。
在結構化程序設計中,另一個嚴重的缺陷是不能很好的模擬真實世界的問題。這是因為函數都是面向過程的,而不是真正的對應於問題中的各個元素。
面向過程的程序設計的一些特點如下:
·強調做(演算法);
·大程序被分隔為許多小程序,這些小程序稱為函數;
·大多數函數共享全局數據;
·數據開放的由一個函數流向另一個函數。函數把數據從一種形式轉換為另一種形式。
採用由上至下的程序設計方法。
動態綁定
綁定指的是將一個過程調用與相應代碼鏈接起來的行為。動態綁定的意思是,與給定的過程調用相關聯的代碼只有在運行期才可知。它與多態和繼承的聯系極為緊密。一個多態引用的函數調用決定於這個引用的動態類型。
考慮圖6中的「draw」方法。通過繼承,每個對象都具備了這個過程。但是,對於不同的對象它的演算法是不同的,因此,draw過程必須在每一個類中重新定義。在運行期,當前引用對象所對應的代碼將被調用。
消息傳遞
一個面向對象的程序由許多對象組成,這些對象之間需要相互溝通。因此,在面向對象程序設計語言中,程序設計的主要步驟如下:
1、創建類,這些類定義了對象及其行為;
2、由類定義創建對象;
3、建立對象之間的通訊。
對象之間通過收發信息相互溝通,這一點類似於人與人之間的信息傳遞。信息傳遞的概念使得真實世界的直接模擬更易於和建立系統交流。
對於某個特定對象來說,消息就是請求執行某個過程,因此,消息的接收對象會調用一個函數(過程),以產生預期的結果。傳遞的消息的內容包括接收消息的對象的名字,需要調用的函數的名字,以及必要的信息。
對象就有一個生命周期。它們可以被創建和銷毀。只要對象正處於其生存期,就可以與其進行通訊。
OOP的優點
OOP具有許多優點,無論是對於程序設計者或者用戶來說都是如此。面向對象為軟體產品擴展和質量保證中的許多問題提供了解決辦法。這項技術能夠大大提高程序員的生產力,並可提高軟體的質量以及降低其維護費用。其主要的優點陳列於下:
1、通過繼承,我們可以大幅減少多餘的代碼,並擴展現有代碼的用途;
2、我們可以在標準的模塊上(這里所謂的「標准」指程序員之間彼此達成的協議)構建我們的程序,而不必一切從頭開始。這可以減少軟體開發時間並提高生產效率;
3、數據隱藏的概念幫助程序員們保護程序免受外部代碼的侵襲;
4、允許一個對象的多個實例同時存在,而且彼此之間不會相互干擾;
5、允許將問題空間中的對象直接映射到程序中;
6、基於對象的工程可以很容易的分割為獨立的部分;
7、以數據為中心的設計方法允許我們抓住可實現模型的更多細節;
8、面向對象的系統很容易從小到大逐步升級;
9、對象間通訊所使用的消息傳遞技術與外部系統介面部分的描述更簡單;
10、更便於控制軟體復雜度。
當需要將以上所說的所有特性有機的結合於一個面向對象系統中,它們之間的相對重要性就取決於工程的類型和程序員的喜好。為了獲得上述的某些優勢,必須考慮很多事情。例如,對象庫必須可以被重用。技術還在不停的發展,現有的產品也會很快的更新換代。如果重用沒有能夠實現,那麼就需要進行嚴格的控制和管理。
易於使用的開發軟體往往難以編寫。面向對象程序設計工具有望解決這個問題。
面向對象程序設計語言
面向對象技術並不是某個特定語言的特權。如同結構化程序設計一樣,OOP概念可以在很多語言比如C和Pascal中實現。但是,當程序越來越大時,程序設計工作會變得拙劣而混亂。而一個支持OOP概念的程序設計語言則可以讓一切變得簡單。
一個語言必須支持幾個主要的OOP概念才能稱其是面向對象的。根據所支持的OOP特性,語言可以分為以下兩類:
1、基於對象的程序設計語言;
2、面向對象的程序設計語言。
基於對象的程序設計語言僅支持封裝和對象辨識。
一個面向對象的程序設計語言所要支持的重要特性如下:
·數據封裝
·數據隱藏和訪問機制
·對象的自動初始化和清除
·操作符重載
支持對象風格程序設計的語言稱為基於對象的程序設計語言。它們不支持繼承和動態綁定。
Ada就是一個典型的基於對象的程序設計語言。
面向對象的程序設計不僅僅包含基於對象程序設計的特性,還支持繼承和動態綁定。
OOP的應用
OOP最有前途的應用領域如下:
1、實時系統;
2、模擬和建模;
3、面相對象資料庫;
4、超文本、超媒體和擴展文本;
5、AI和專家系統;
6、神經網路和並行程序設計;
7、決策支持和辦公自動化系統;
8、CIM/CAM/CAD系統。�0�2
❻ 面向對象程序設計語言的特點
Java語言特點Java是一種簡單的,面向對象的,分布式的,解釋型的,健壯安全的歷拿禪,結構中立的,可移植的,性能優異、多線程的動態語言。Java主要特性1、Java語言是簡單的。Java語言的語法與C語言和C++語言很接近,使得大多數程序員很容易學習和使用Java。另一方面,Java丟棄了C++ 中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動的強制類型轉換。特別地,Java語言不使用指針,並提供了自動的廢料收集,使得程序員不必為內存管理而擔憂。2、Java語言是一個面向對象的。Java語言提供類、介面和繼承等原語,為了簡單起見,只支持類之間的單繼承,但支持介面之敏猛間的多繼承,並支持類與介面之間的實現機制(關鍵字為implements)。Java語言全面支持動態綁定,而C++ 語言只對虛函數使用動態綁定。總之,Java語言是一個純的面向對象程序設計語言。3、Java語言是分布式的。Java語言支持Internet應用的開發,在基本的Java應用編程介面中有一個網路應用編程介面(java.net),它提供了用於網路應用編程的類庫,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(遠程方法激活)機制也是開發分布式應用的重要手段。4、Java語言是健壯的。Java的強類型機制、異常處理、廢料的自動收集等是Java程序健壯性的重要保證。對指針的丟棄是Java的明智選擇。Java的安全檢查機制使得Java更具健壯性。5、Java語言是安全的。Java通常被用在網路環境中,肢塵為此,Java提供了一個安全機制以防惡意代碼的攻擊。除了Java語言具有的許多安全特性以外,Java對通過網路下載的類具有一個安全防範機制(類ClassLoader),如分配不同的名字空間以防替代本地的同名類、位元組代碼檢查,並提供安全管理機制(類SecurityManager)讓Java應用設置安全哨兵。 6、Java語言是體系結構中立的。Java程序(後綴為java的文件)在Java平台上被編譯為體系結構中立的位元組碼格式(後綴為class的文件), 然後可以在實現這個Java平台的任何系統中運行。這種途徑適合於異構的網路環境和軟體的分發。 7、Java語言是可移植的。這種可移植性來源於體系結構中立性,另外,Java還嚴格規定了各個基本數據類型的長度。Java系統本身也具有很強的可移植性,Java編譯器是用Java實現的,Java的運行環境是用ANSI C實現的。8、Java語言是解釋型的。如前所述,Java程序在Java平台上被編譯為位元組碼格式, 然後可以在實現這個Java平台的任何系統中運行。在運行時,Java平台中的Java解釋器對這些位元組碼進行解釋執行,執行過程中需要的類在聯接階段被載入到運行環境中。9、Java是高性能的。與那些解釋型的高級腳本語言相比,Java的確是高性能的。事實上,Java的運行速度隨著JIT(Just-In-Time)編譯器技術的發展越來越接近於C++。 10、Java語言是多線程的。在Java語言中,線程是一種特殊的對象,它必須由Thread類或其子(孫)類來創建。通常有兩種方法來創建線程:其一,使用型構為Thread(Runnable) 的構造子將一個實現了Runnable介面的對象包裝成一個線程,其二,從Thread類派生出子類並重寫run方法,使用該子類創建的對象即為線程。值得注意的是Thread類已經實現了Runnable介面,因此,任何一個線程均有它的run方法,而run方法中包含了線程所要運行的代碼。線程的活動由一組方法來控制。 Java語言支持多個線程的同時執行,並提供多線程之間的同步機制(關鍵字為synchronized)。11、Java語言是動態的。Java語言的設計目標之一是適應於動態變化的環境。Java程序需要的類能夠動態地被載入到運行環境,也可以通過網路來載入所需要的類。這也有利於軟體的升級。另外,Java中的類有一個運行時刻的表示,能進行運行時刻的類型檢查。Java語言的優良特性使得Java應用具有無比的健壯性和可靠性,這也減少了應用系統的維護費用。Java對對象技術的全面支持和Java平台內嵌的API能縮短應用系統的開發時間並降低成本。Java的編譯一次,到處可運行的特性使得它能夠提供一個隨處可用的開放結構和在多平台之間傳遞信息的低成本方式。特別是Java企業應用編程介面(Java Enterprise APIs)為企業計算及電子商務應用系統提供了有關技術和豐富的類庫。Java的八大基本數據類型及其包裝類原始類型 包裝類 原始類型所佔的位元組數short Short 2個位元組 int Integer 4個位元組long Long 8個位元組 float Float 4個位元組double Double 8個位元組byte Byte 1個位元組char Character 2個位元組 boolean Boolean 這個試編譯環境而定