天天看點

Java 類和對象詳解(三)——private修飾符private 修飾符的應用getter 和 setter 方法

引言:

在咱們之前寫的程式中,Person類的name和age屬性,在類的外部,主方法中,或者其他地方都可以直接調用這個屬性,這顯得于有些不合理。

舉個現實生活中的栗子:

對于銀行可這個類來說,銀行卡的卡号,餘額,密碼,這三個屬性。

如果這三個屬性直接暴露在外部,這就會很不安全,不能讓這些屬性通過對象就被外部直接通路了。

再舉個栗子:

對于汽車這個類來說,車從熄火到發動起起來,是需要很多個屬性之間互相配合。這些屬性對于我們使用者來說,是不可見的,也是我們不關注的。

隻需要用鑰匙一鍵啟動(也就是我們程式設計中的方法),方法的内部把這些程式來進行一個調配和操作,車就啟動了,我們不關心内部過程。

面向對象一共有三大特性 :封裝,繼承和多态。

文章目錄

  • private 修飾符的應用
  • getter 和 setter 方法

我們首先介紹 封裝,繼承和多态我們會在後邊的博文中介紹~~

封裝的特性:這裡我們隻介紹兩個重要的特性——保護性和易用性,保護性就是上面銀行卡的例子,而易用性展現在汽車那個例子。

用private實作屬性和方法的封裝隻是封裝中的一種(這點很容易會讓人誤以為封裝隻有private)。

在Java中,所謂的權限修飾符,指的是被修飾的屬性,方法,類可見的範圍有多大。

一共有四大通路權限修飾符,從小到大的順序依次為:

private < default < protected < public

private:被private修飾的屬性和方法,隻能在目前類的内部可見,出了目前類的内部,也就是出了 {} ,對外部就完全隐藏了。

default:這個關鍵字不需要寫額,什麼權限也沒有,就是個包通路權限。

protected:這個關鍵字會在後邊的博文中,等講到多态和繼承時候介紹到。

public:被public修飾的東東,在目前程式(項目)中都是可見的,都是可以使用的。

提出問題:

private關鍵字能否修飾一個類?

答:

private關鍵字一定不能修飾外部類,類定義的目的就是為了産生對象,讓外部來使用, private修飾一個類,外部根本不知道,還怎麼用。而且會編譯出錯!!!

private 修飾符的應用

範例1:

Java 類和對象詳解(三)——private修飾符private 修飾符的應用getter 和 setter 方法

範例2:

Java 類和對象詳解(三)——private修飾符private 修飾符的應用getter 和 setter 方法

範例3:

Java 類和對象詳解(三)——private修飾符private 修飾符的應用getter 和 setter 方法

getter 和 setter 方法

那麼問題來了,如果在類的外部想要通路這些私有屬性或者方法怎麼辦呢???

這時就需要使用類提供的 getter(取值)和 setter(修改值)方法!

在IDEA使用快捷鍵 Alt + intsert 快捷生成~~

到底哪些屬性需要提供getter,讓外部可見,哪些屬性需要提供setter,讓外部修改,這個要根據屬性的特征來決定。

這兩個方法其實就是普通的成員方法,隻是命名上有規則~~

拿上邊的銀行卡那個類來舉例:

銀行卡卡号隻可取而不可修改的,銀行卡的餘額也是隻可取而不可修改的,

銀行卡的密碼是既可取也可以修改的。

是以銀行卡号和卡裡的餘額要用到getter方法,而銀行卡密碼要用到getter和setter方法。

阿裡程式設計規範:

Java中所有的成員變量一律使用private封裝,并且根據屬性的實際情況對外提供getter和setter方法。

未完待續…