面向對象的三大特性及作用(面向對象的3大基本特徵)
2023-04-20 08:18:24 2
面向對象的開發範式其實是對現實世界的理解和抽象的方法,那麼,具體如何將現實世界抽象成代碼呢?這就需要運用面向對象的三大基本特徵,分別是封裝、繼承和多態。
1. 封裝(Encapsulation)
所謂封裝,就是把客觀事物封裝成抽象的類,並且類可以把自己的數據和方法只讓可信的類或者對象操作,對不可信的類或者對象隱藏信息。
簡單地說,一個類就是一個封裝了數據及操作這些數據的代碼的邏輯實體。在一個對象內部,某些代碼或某些數據可以是私有的,不能被外界訪問。通過這種方式,對象對內部數據提供了不同級別的保護,以防止程序中無關的部分意外地改變或錯誤地使用了對象的私有部分。
封裝舉例
比如我們想定義一個矩形,先定義一個Rectangle類,然後通過封裝的手段放入一些必備
數據:
/*** 矩形*/class Rectangle {/*** 設置矩形的長度和寬度*/public Rectangle(int length, int width) {this.length = length;this.width = width;}/*** 長度*/private int length;/*** 寬度*/private int width;/*** 獲得矩形面積** @return*/public int area {return this.length * this.width;}}
我們通過封裝的方式,給「矩形」定義了「長度」和「寬度」,這就完成了對現實世界中「矩形」的抽象的第一步。
2. 繼承(Inheritance)繼承是指這樣一種能力:它可以使用現有類的所有功能,並在無須重新編寫原來的類的情況下對這些功能進行擴展。
通過繼承創建的新類稱為「子類」或「派生類」,被繼承的類稱為「基類」「父類」「超類」。繼承的過程就是從一般到特殊的過程。
繼承舉例
比如我們想定義一個正方形,因為已經有了矩形,所以可以直接繼承Rectangle類(正方形是長方形的一種特例):
/*** 正方形,繼承自矩形*/class Square extends Rectangle {/*** 設置正方形邊長** @param length*/public Square(int length) {super(length, length);}}
在現實世界中,「正方形」是「矩形」的特例,或者說正方形是通過矩形派生出來的,這種派生關係在面向對象中可以用繼承來表達。
3. 多態(Polymorphism)所謂多態,就是指一個類實例的相同方法在不同情形下有不同的表現形式。多態機制使具有不同內部結構的對象可以共享相同的外部接口。
這意味著,雖然針對不同對象的具體操作不同,但通過一個公共的類,它們(那些操作)可以通過相同的方式予以調用。
最常見的多態就是將子類傳入父類參數中,當運行時調用父類方法時,通過傳入的子類決定具體的內部結構或行為。
關於多態的例子,將在第2章中深入介紹。
在介紹了面向對象的封裝、繼承、多態三個基本特徵之後,我們基本了解了對現實世界抽象的方法。
內容摘自《深入理解Java核心技術(雙色)》,作者張洪亮(@Hollis),他是阿里巴巴技術專家,51CTO 專欄作家,CSDN 博客專家,掘金優秀作者,《程式設計師的三門課》聯合作者,《Java工程師成神之路》系列文章作者;熱衷於分享計算機編程相關技術,博文全網閱讀量數千萬。
,