亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行java面向對象編程原理的分析

發布時間:2022-01-11 15:22:57 來源:億速云 閱讀:178 作者:柒染 欄目:編程語言

這期內容當中小編將會給大家帶來有關如何進行java面向對象編程原理的分析,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

Java 的核心是面向對象編程。事實上,所有的Java 程序都是面向對象的,你別無選擇。這一點與C++ 不同,因為在那里你可以選擇是否面向對象編程。面向對象編程與Java 密不可分,因此,在你編寫哪怕是最簡單的Java 程序以前,也必須理解它的基本原則。因此,下面先從面向對象編程的概念講起。
1 兩種范型
我們知道,所有的計算機程序都由兩類元素組成:代碼和數據。此外,從概念上講,程序還可以以它的代碼或是數據為核心進行組織編寫。也就是說,一些程序圍繞“正在發生什么”編寫,而另一些程序則圍繞“誰將被影響”編寫。這兩種范型決定程序的構建方法。第一種方法被稱為面向過程的模型(process -oriented model ),用它編寫的程序都具有線性執行的特點。面向過程的模型可認為是代碼作用于數據,像C這樣的過程式語言采用這個模型是相當成功的。然而,正如在第1章提到的,當程序變得更大并且更復雜時,就會出現問題。
為了管理不斷增加的復雜性,第二種方式,也就是面向對象的編程(object-oriented programming )被構思出來了。面向對象的編程圍繞它的數據(即對象)和為這個數據嚴格定義的接口來組織程序。面向對象的程序實際上是用數據控制對代碼的訪問。下面你將看到,將控制的實體變換為數據,可使程序在組織結構上從若干方面受益。
2 抽象
面向對象編程的一個實質性的要素是抽象。人們通過抽象(abstraction)處理復雜性。例如,人們不會把一輛汽車想象成由幾萬個互相獨立的部分所組成的一套裝置,而是把汽車想成一個具有自己獨特行為的對象。這種抽象使人們可以很容易地將一輛汽車開到雜貨店,而不會因組成汽車各部分零件過于復雜而不知所措。他們可以忽略引擎、傳動及剎車系統的工作細節,將汽車作為一個整體來加以利用。
使用層級分類是管理抽象的一個有效方法。它允許你根據物理意義將復雜的系統分解為更多更易處理的小塊。從外表看,汽車是一個獨立的對象。一旦到了內部,你會看到汽車由若干子系統組成:駕駛系統,制動系統,音響系統,安全帶,供暖,便攜電話,等等。再進一步細分,這些子系統由更多的專用元件組成。例如,音響系統由一臺收音機、一個CD播放器、或許還有一臺磁帶放音機組成。從這里得到的重要啟發是,你通過層級抽象對復雜的汽車(或任何另外復雜的系統)進行管理。
復雜系統的分層抽象也能被用于計算機程序設計。傳統的面向過程程序的數據經過抽象可用若干個組成對象表示,程序中的過程步驟可看成是在這些對象之間進行消息收集。這樣,每一個對象都有它自己的獨特行為特征。你可以把這些對象當作具體的實體,讓它們對告訴它們做什么事的消息作出反應。這是面向對象編程的本質。
面向對象的概念是Java 的核心,對程序員來講,重要的是要理解這些概念怎么轉化為程序。你將會發現,在任何主要的軟件工程項目中,軟件都不可避免地要經歷概念提出、成長、衰老這樣一個生命周期,而面向對象的程序設計,可以使軟件在生命周期的每一個階段都處變不驚,有足夠的應變能力。例如,一旦你定義好了對象和指向這些對象的簡明的、可靠的接口,你就能很從容很自信地解除或更替舊系統的某些組成部分。
3 面向對象編程的3個原則
所有面向對象的編程語言都提供幫助你實現面向對象模型的機制,這些機制是封裝,繼承及多態性。現在讓我們來看一下它們的概念。
封裝
封裝(Encapsulation )是將代碼及其處理的數據綁定在一起的一種編程機制,該機制保證了程序和數據都不受外部干擾且不被誤用。理解封裝性的一個方法就是把它想成一個黑匣子,它可以阻止在外部定義的代碼隨意訪問內部代碼和數據。對黑匣子內代碼和數據的訪問通過一個適當定義的接口嚴格控制。如果想與現實生活中的某個事物作對比,可考慮汽車上的自動傳送。自動傳送中包含了有關引擎的數百比特的信息,例如你正在以什么樣的加速度前進,你行駛路面的坡度如何,以及目前的檔位。作為用戶,你影響這個復雜封裝的方法僅有一個:移動檔位傳動桿。例如,你不能通過使用拐彎信號或擋風玻璃擦拭器影響傳動。所以檔位傳動桿是把你和傳動連接起來的惟一接口。此外,傳動對象內的任何操作都不會影響到外部對象,例如,檔位傳動裝置不會打開車前燈!因為自動傳動被封裝起來了,所以任何一家汽車制造商都可以選擇一種適合自己的方式來實現它。然而,從司機的觀點來看,它們的用途都是一樣的。與此相同的觀點能被用于編程。封裝代碼的好處是每個人都知道怎么訪問它,但卻不必考慮它的內部實現細節,也不必害怕使用不當會帶來負面影響。
Java 封裝的基本單元是類。盡管類將在以后章節詳細介紹。現在仍有必要對它作一下簡單的討論。一個類(class)定義了將被一個對象集共享的結構和行為(數據和代碼)。一個給定類的每個對象都包含這個類定義的行為和結構,好像它們是從同一個類的模子中鑄造出來似的。因為這個原因,對象有時被看作是類的實例(instances of a class )。所以,類是一種邏輯結構,而對象是真正存在的物理實體。
當創建一個類時,你要指定組成那個類的代碼和數據。從總體上講,這些元素都被稱為該類的成員(members )。具體地說,類定義的數據稱為成員變量(member variables)或實例變量(instance variables )。操作數據的代碼稱為成員方法(member methods )或簡稱方法(methods )。如果你對C/C++ 熟悉,可以這樣理解:Java 程序員所稱的方法,就是C/C++ 程序員所稱的函數(function )。在完全用Java 編寫的程序中,方法定義如何使用成員變量。這意味著一個類的行為和接口是通過方法來定義的,類這些方法對它的實例數據進行操作。
既然類的目的是封裝復雜性,在類的內部就應該有隱藏實現復雜性機制。類中的每個方法或變量都可以被標記為私有(private )或公共(public )。類的公共接口代表類的外部用戶需要知道或可以知道的每件事情;私有方法和數據僅能被一個類的成員代碼所訪問,其他任何不是類的成員的代碼都不能訪問私有的方法或變量。既然類的私有成員僅能被程序中的其他部分通過該類的公共方法訪問,那么你就能保證不希望發生的事情就一定不會發生。當然,公共接口應該小心仔細設計,不要過多暴露類的內部內容。

繼承
繼承(Inheritance )是一個對象獲得另一個對象的屬性的過程。繼承很重要,因為它支持了按層分類的概念。如前面提到的,大多數知識都可以按層級(即從上到下)分類管理。例如,尊貴的獵犬是狗類的一部分,狗又是哺乳動物類的一部分,哺乳動物類又是動物類的一部分。如果不使用層級的概念,我們就不得不分別定義每個動物的所有屬性。使用了繼承,一個對象就只需定義使它在所屬類中獨一無二的屬性即可,因為它可以從它的父類那兒繼承所有的通用屬性。所以,可以這樣說,正是繼承機制使一個對象成為一個更具通用類的一個特定實例成為可能。下面讓我們更具體地討論這個過程。
大多數人都認為世界是由對象組成的,而對象又是按動物、哺乳動物和狗這樣的層級結構相互聯系的。如果你想以一個抽象的方式描述動物,那么你可以通過大小、智力及骨胳系統的類型等屬性進行描述。動物也具有確定的行為,它們也需要進食、呼吸,并且睡覺。這種對屬性和行為的描述就是對動物類的定義。
如果你想描述一個更具體的動物類,比如哺乳動物,它們會有更具體的屬性,比如牙齒類型、乳腺類型等。我們說哺乳類動物是動物的子類(subclass ),而動物是哺乳動物的超類(superclass )。

由于哺乳動物類是需要更加精確定義的動物,所以它可以從動物類繼承(inherit )所有的屬性。一個深度繼承的子類繼承了類層級(class hierarchy )中它的每個祖先的所有屬性。
繼承性與封裝性相互作用。如果一個給定的類封裝了一些屬性,那么它的任何子類將具有同樣的屬性,而且還添加了子類自己特有的屬性。這是面向對象的程序在復雜性上呈線性而非幾何性增長的一個關鍵概念。新的子類繼承它的所有祖先的所有屬性。它不與系統中其余的多數代碼產生無法預料的相互作用。
多態性
多態性(Polymorphism ,來自于希臘語,表示“多種形態”)是允許一個接口被多個同類動作使用的特性,具體使用哪個動作與應用場合有關,下面我們以一個后進先出型堆棧為例進行說明。假設你有一個程序,需要3種不同類型的堆棧。一個堆棧用于整數值,一個用于浮點數值,一個用于字符。盡管堆棧中存儲的數據類型不同,但實現每個棧的算法是一樣的。如果用一種非面向對象的語言,你就要創建3個不同的堆棧程序,每個程序一個名字。但是,如果使用Java ,由于它具有多態性,你就可以創建一個通用的堆棧程序集,它們共享相同的名稱。
多態性的概念經常被說成是“一個接口,多種方法”。這意味著可以為一組相關的動作設計一個通用的接口。多態性允許同一個接口被必于同一類的多個動作使用,這樣就降低了程序的復雜性。選擇應用于每一種情形的特定的動作(specific action )(即方法)是編譯器的任務,程序員無需手工進行選擇。你只需記住并且使用通用接口即可。

再拿狗作比喻,一條狗的嗅覺是多態的。如果狗聞到貓的氣味,它會在吠叫并且追著它跑。如果狗聞到食物的氣味,它將分泌唾液并向盛著食物的碗跑去。兩種狀況下是同一種嗅覺器官在工作,差別在于聞到了什么氣味,也就是有兩種不同類型的數據作用于狗的鼻子!在一個Java 程序中使用方法時,也可以采用這個通用的概念。
多態性、封裝性與繼承性相互作用
如果用得當,在由多態性、封裝性和繼承性共同組成的編程環境中可以寫出比面向過程模型環境更健壯、擴展性更好的程序。精心設計的類層級結構是重用你花時間和努力改進并測試過的程序的基礎,封裝可以使你在不破壞依賴于類公共接口的代碼基礎上對程序進行升級遷移,多態性則有助于你編寫清楚、易懂、易讀、易修改的程序。
在前面兩個與現實生活有關的實例中,汽車更能全面說明面向對象設計的優點,為介紹繼承而用狗作類比也很有趣。總的來說,汽車與程序很相似,所有的駕駛員依靠繼承性很快便能掌握駕駛不同類型(子類)車輛的技術。不管是接送學生的校車,或是默西迪斯私家轎車,或是保時捷汽車,或是家庭汽車,司機差不多都能找到方向盤、制動閘和加速器,并知道如何操作。經過一段駕駛,大多數人甚至能知道手動檔與自動檔之間的差別,因為他們從根本上理解這兩個檔的超類—— 傳動。
人們在汽車上看見的總是封裝好的特性。剎車和踏腳板隱蔽著不可思議的復雜性,但接口卻是如此簡單,你的腳就可以操作它們!引擎、制動閘及輪胎的大小對于你如何定義踏腳板類的接口沒有任何影響。
最后的屬性,多態性,在汽車制造商基于相同的交通工具所提供的多種選擇的能力上得到了充分反映。例如,剎車系統有正鎖和反鎖之分,方向盤有帶助力或不帶助力之分,引擎有4缸、6缸或8缸之分。無論設置如何,你都得腳踩剎車板來停車,轉動方向盤來轉向,按離合器來制動。同樣的接口能被用來控制許多不同的實現過程。
正如你所看到的,通過封裝、繼承及多態性原理,各個獨立部分組成了汽車這個對象。這在計算機程序設計中也是一樣的。通過面向對象原則的使用,可以把程序的各個復雜部分組合成一個一致的、健壯的、可維護的程序整體。

上述就是小編為大家分享的如何進行java面向對象編程原理的分析了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绍兴县| 安化县| 新巴尔虎右旗| 昔阳县| 北辰区| 福清市| 交城县| 瑞丽市| 安阳县| 邹城市| 拉萨市| 晋江市| 任丘市| 楚雄市| 闸北区| 百色市| 泽库县| 敦化市| 九寨沟县| 武安市| 蓬莱市| 永平县| 保亭| 曲麻莱县| 武邑县| 故城县| 达拉特旗| 运城市| 克拉玛依市| 鞍山市| 深泽县| 竹北市| 牟定县| 大冶市| 互助| 临沂市| 嘉兴市| 镇沅| 孟津县| 闻喜县| 隆安县|