
Java語言面向對象的4大特征
Java語言面向對象的4大特征
Java是一種面向對象的跨平臺編程語言,簡單易用,功能強大。
具有簡單性、面向對象、分布式、健壯性、安全性、平臺的獨立與可
移植性、多線程、動態性等特點,在這篇文章中,我們不討論Java的
語言特征,我們來說說Java面向對象的四大特性:封裝、抽象、繼承
和多態。
封裝
封裝就是將抽象得到的數據和行為或功能相結合,形成一個有機
的整體,也就是將數據與操作數據的源代碼進行有機的結合,形成
“類”,其中數據和函數都是類的成員。
在面向對象語言中,封裝特性是由類來體現的,我們將現實生活
中的一類實體定義成類,其中包括屬性和行為在Java中就是方法,
就好像人類,可以具有name,x,age等屬性,同時也具有eat,sleep
等行為,我們在行為中實現一定的功能,也可操作屬性,這是面向對
象的封裝特性.
封裝隱藏了類的內部實現機制,可以在不影響使用的情況下改變
類的內部結構,同時也保護了數據。對外界而已它的內部細節是隱藏
的,暴露給外界的只是它的訪問方法。封裝的目的是增強安全性和簡
化編程,使用者不必了解具體的實現細節,而只是要通過外部接口,
一特定的訪問權限來使用類的成員。
封裝是保證軟件部件具有優良的模塊性的基礎,封裝的目標就是
要實現軟件部件的“高內聚、低耦合”,防止程序相互依賴性而帶來的
變動影響。在面向對象的編程語言中,對象是封裝的最基本單位,面
向對象的封裝比傳統語言的封裝更為清晰、更為有力。面向對象的封
裝就是把描述一個對象的屬性和行為的代碼封裝在一個“模塊”中,也
就是一個類中,屬性用變量定義,行為用方法進行定義,方法可以直
接訪問同一個對象中的屬性。
通常情況下,只要記住讓變量和訪問這個變量的方法放在一起,
將一個類中的成員變量全部定義成私有的,只有這個類自己的方法才
可以訪問到這些成員變量,這就基本上實現對象的封裝,就很容易找
出要分配到這個類上的方法了,就基本上算是會面向對象的編程了。
把握一個原則:把對同一事物進行操作的方法和相關的方法放在同一
個類中,把方法和它操作的數據放在同一個類中。
例如,人要在黑板上畫圓,這一共涉及三個對象:人、黑板、圓,
畫圓的方法要分配給哪個對象呢?由于畫圓需要使用到圓心和半徑,
圓心和半徑顯然是圓的屬性,如果將它們在類中定義成了私有的成員
變量,那么,畫圓的方法必須分配給圓,它才能訪問到圓心和半徑這
兩個屬性,人以后只是調用圓的畫圓方法、表示給圓發給消息而已,
畫圓這個方法不應該分配在人這個對象上,這就是面向對象的封裝性,
即將對象封裝成一個高度自治和相對封閉的個體,對象狀態屬性由這
個對象自己的行為方法來讀取和改變。
一個更便于理解的例子就是,司機將火車剎住了,剎車的動作是
分配給司機,還是分配給火車,顯然,應該分配給火車,因為司機自
身是不可能有那么大的力氣將一個火車給停下來的,只有火車自己才
能完成這一動作,火車需要調用內部的離合器和剎車片等多個器件協
作才能完成剎車這個動作,司機剎車的過程只是給火車發了一個消息,
通知火車要執行剎車動作而已。
抽象
抽象就是將一類實體的共同特性抽象出來,封裝在一個抽象類中,
所以抽象在面向對象語言是由抽象類來體現的。簡單來說,抽象就是
找出一些事物的相似和共性之處,然后將這些事物歸為一個類,這個
類只考慮這些事物的相似和共性之處,并且會忽略與當前主題和目標
無關的那些方面,將注意力集中在與當前目標有關的方面。
例如,看到一只螞蟻和大象,你能夠想象出它們的`相同之處,那
就是抽象。抽象類不能實例化,比如鳥就是一個抽象實體,因為抽象
實體并不是一個真正的對象,它的屬性還不能完全描述一個對象,所
以在語言中體現為抽象類不能實例化。抽象包括行為抽象和狀態抽象
兩個方面。例如,定義一個Person類,如下:
ClassPerson
Stringname;
intage;
人本來是很復雜的事物,有很多方面,但因為當前系統只需要了
解人的姓名和年齡,所以上面定義的類中只包含姓名和年齡這兩個屬
性,這就是一種抽像,使用抽象可以避免考慮一些與目標無關的細節。
我對抽象的理解就是不要用顯微鏡去看一個事物的所有方面,這樣涉
及的內容就太多了,而是要善于劃分問題的邊界,當前系統需要什么,
就只考慮什么。
繼承
在定義和實現一個類的時候,可以在一個已經存在的類的基礎之
上來進行,把這個已經存在的類所定義的內容作為自己的內容,并可
以加入若干新的內容,或修改原來的方法使之更適合特殊的需要,這
就是繼承。繼承是子類自動共享父類數據和方法的機制,這是類之間
的一種關系,提高了軟件的可重用性和可擴展性。
簡單的說,繼承就是在一個現有類型的基礎上,通過增加新的方
法或者重定義已有方法的方式,產生一個新的類型。我們在使用JAVA
時編寫的每一個類都是在繼承,因為在JAVA語言中,
類是所有類最根本的基類或者叫父類、超類,如果我們新定義的一個
類沒有明確地指定繼承自哪個基類,那么JAVA就會默認為它是繼承
自Object類的。
多態
多態是指程序中定義的引用變量所指向的具體類型和通過該引
用變量發出的方法調用在編程時并不確定,而是在程序運行期間才確
定,即一個引用變量倒底會指向哪個類的實例對象,該引用變量發出
的方法調用到底是哪個類中實現的方法,必須在由程序運行期間才能
決定。
因為在程序運行時才確定具體的類,這樣,不用修改源程序代碼,
就可以讓引用變量綁定到各種不同的類實現上,從而導致該引用調用
的具體方法隨之改變,即不修改程序代碼就可以改變程序運行時所綁
定的具體代碼,讓程序可以選擇多個運行狀態,這就是多態性。多態
性增強了軟件的靈活性和擴展性。可以說,多態就是通過傳遞給父類
對象引用不同的子類對象從而表現出不同的行為,多態可為程序提供
更好的可擴展性,同樣也可以代碼重用。
例如,下面代碼中的UrDao是一個接口,它定義引用變量
urDao指向的實例對象由在執行的時候返回,
有時候指向的是UrJdbcDao這個實現,有時候指向的是
UrHibernateDao這個實現,這樣,不用修改源代碼,就可以改變
urDao指向的具體類實現,從而導致方法調用的具體
代碼也隨之改變,即有時候調用的是UrJdbcDao的Ur方法,有
時候調用的是UrHibernateDao的Ur方法:
UrDaourDao=;
er;
程序中定義的引用變量所指向的具體類型和通過該引用變量發
出的方法調用在編程時并不確定,而是在程序運行期間才確定,即一
個引用變量倒底會指向哪個類的實例對象,該引用變量發出的方法調
用到底是哪個類中實現的方法,必須在由程序運行期間才能決定。因
為在程序運行時才確定具體的類,這樣,不用修改源程序代碼,就可
以讓引用變量綁定到各種不同的類實現上,從而導致該引用調用的具
體方法隨之改變,即不修改程序代碼就可以改變程序運行時所綁定的
具體代碼,讓程序可以選擇多個運行狀態,這就是多態性。
方法的重寫Overriding和重載Overloading是Java多態性的不
同表現。重寫Overriding是父類與子類之間多態性的一種表現,重
載Overloading是一個類中多態性的一種表現。如果在子類中定義某
方法與其父類有相同的名稱和參數,我們說該方法被重寫Overriding。
子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類
中的定義如同被“屏蔽”了。如果在一個類中定義了多個同名的方法,
它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載
Overloading。Overloaded的方法是可以改變返回值的類型。方法的
重寫Overriding和重載Overloading是Java多態性的不同表現。
以上就是Java語言中面向對象的四大特性:封裝、抽象、繼承和
多態,不知道有沒有讓你對Java語言有更深入的認知。
本文發布于:2023-03-03 08:44:50,感謝您對本站的認可!
本文鏈接:http://www.newhan.cn/zhishi/a/1677804290120634.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:面向對象的特征.doc
本文 PDF 下載地址:面向對象的特征.pdf
| 留言與評論(共有 0 條評論) |