當前位置:才華齋>IT認證>計算機等級>

JAVA面向物件的三大特性

計算機等級 閱讀(1.75W)

每一物件是其狀態和行為的封裝。類是按一定體系和層次安排的,使得子類可以從超類繼承行為。在這個類層次體系中有一個根類,它是具有一般行為的類。Java程式是用類來組織的。下面是小編整理的關於JAVA面向物件的三大特性,希望大家認真閱讀!

JAVA面向物件的三大特性

  封裝性

理解封裝性概念

封裝是將程式碼及其處理的資料繫結在一起的一種程式設計機制,該機制保證了程式(方法)和資料(屬性)都不受外部干擾且不被誤用。

理解封裝性的一個方法就是把它想成一個黑匣子,它可以阻止在外部定義的程式碼隨意訪問內部程式碼和資料。對黑匣子內程式碼和資料的訪問通過一個適當定義的介面嚴格控制。

如果想與現實生活中的某個事物作對比,可考慮汽車上的自動傳送。自動傳送中包含了有關引擎的數百位元的資訊,例如你正在以什麼樣的加速度前進,你行駛路面的坡度如何,以及目前的檔位。作為使用者,你影響這個複雜封裝的方法僅有一個:移動檔位傳動杆。例如,你不能通過使用拐彎訊號或擋風玻璃擦拭器影響傳動。所以檔位傳動杆是把你和傳動連線起來的惟一介面。此外,傳動物件內的任何操作都不會影響到外部物件,例如,檔位傳動裝置不會開啟車前燈!因為自動傳動被封裝起來了,所以任何一家汽車製造商都可以選擇一種適合自己的方式來實現它。然而,從司機的觀點來看,它們的用途都是一樣的。與此相同的觀點能被用於程式設計。封裝程式碼的好處是每個人都知道怎麼訪問它,但卻不必考慮它的內部實現細節,也不必害怕使用不當會帶來負面影響。

  java封裝的物件

Java封裝的基本單元是類。一個類定義了將被許多物件共享的屬性和行為方法。這個類的每個物件都包含這個類定義的行為和屬性,好像它們是從同一個類的模子中鑄造出來似的。因為這個原因,物件被看作是類的例項,可以說類是例項物件的模板。所以,類是一種邏輯結構,而物件是真正存在的物理實體。

當建立一個類時,你要指定組成這個類的屬性和方法。在用Java編寫的程式中,方法定義如何使用成員變數。這意味著一個類的行為和介面是通過方法來定義的,類的這些方法對它的例項資料進行操作。

訪問許可權

封裝:隱藏物件的屬性和實現細節,僅對外公開介面。

(1)private(私有變數):只能被定義它的類訪問。

(2)protected(受保護變數):可以被定義它的類及子孫類直接訪問,也可以由同一包中的其他類直接訪問。

(3)public(公共變數):可以被任何類進行訪問。

(4)package:可以被定義它的類和同一個包中的其他類(包括派生子類)所訪問.(包變數在宣告時常常省略package關鍵字),在其他包中的子類則不能訪問父類的包變數

既然類的目的是封裝複雜性,在類的內部就應該有隱藏實現複雜性機制。類中的每個方法或變數都可以被標記為私有(private)或公共(public)。類的公共介面代表類的外部使用者需要知道或可以知道的每件事情;私有方法和資料僅能被一個類的成員程式碼所訪問,其他任何不是類的成員的程式碼都不能訪問私有的方法或變數。既然類的私有成員僅能被程式中的其他部分通過該類的公共方法訪問,那麼你就能保證不希望發生的事情就一定不會發生。

  繼承性

  理解繼承性概念

繼承是一個物件獲得另一個物件的屬性的過程。

繼承很重要,因為它支援了按層分類的.概念。例如,尊貴的獵犬是狗類的一部分,狗又是哺乳動物類的一部分,哺乳動物類又是動物類的一部分。如果不使用層級的概念,我們就不得不分別定義每個動物的所有屬性。使用了繼承,一個物件就只需定義使它在所屬類中獨一無二的屬性即可,因為它可以從它的父類那兒繼承所有的通用屬性。所以,可以這樣說,正是繼承機制使一個物件成為一個更具通用類的一個特定例項成為可能。下面讓我們更具體地討論這個過程。

一個深度繼承的子類繼承了類層級中它的每個祖先的所有屬性。繼承性與封裝性相互作用。如果一個給定的類封裝了一些屬性,那麼它的任何子類將具有同樣的屬性,而且還添加了子類自己特有的屬性。新的子類繼承它的所有祖先的所有屬性。

(1)複用其他物件的程式碼有兩種方法:

①. 繼承:是由子物件完全繼承父物件的資料和操作,”is”的關係。

②. 包含:把一個物件作為另外一個物件的一部分,從而達到複用的目的,”has”的關係。

(2)繼承的理解:

①. 繼承是類實現可重用性和可擴充性的關鍵特徵,在繼承關係下類之間組成網狀的層次結構。

②. 繼承避免公用程式碼的重複開發,減少程式碼的冗餘。

③. 通過繼承增強一致性,從而減少模組間的介面和介面

(3)單繼承(Java支援):

子類只能有一個直接父類,多繼承(Java不支援):子類可以有多個直接父類。

Java不支援類的多繼承,但支援介面的多繼承。繼承通過關鍵字extends實現。

(4)變數隱藏:

在子類對父類的繼承中,如果子類與父類的成員變數同名,此時成為子類隱藏(override)了父類的成員變數。子類若要引用父類的同名變數,要用super關鍵字做字首加圓點操作符引用,即“super.變數名”。

(5)方法覆蓋:

在子類中重寫父類的方法,它們的名稱,引數以及返回型別完全相同。通過改寫方法體來完成不同的功能。注意子類方法不能縮小父類方法的訪問許可權 。

(6)super關鍵字:

如果子類呼叫父類的建構函式,則通過super()呼叫來實現。如果子類呼叫父類的同名方法,則通過super.方法名()來實現。

(7)this關鍵字: