在平時編寫代碼的時候我們一定會用到public、private這些「java訪問修飾符「,可是你知道java為什麼要設計這些「訪問修飾符」嗎?今天我們就一起來看看
廢話少說,先看定義!
01定義
java有四個訪問修飾符
public:被public修飾的成員可以被所有類訪問到
protected:所修飾的成員會被位於同一包中所有類可以訪問到。被protected所修飾的成員會被該類的所有子類繼承下來
default:會被位於同一package中所有類訪問到
private:私有的,即只能在當前類中被訪問到。
四個訪問修飾符的作用域如下:
結合這些定義,再回想我們平時的編碼和學習,public和private用的很多。下面就舉一個簡單的例子。
02舉例子
我們用public修飾一個普通人的錢
然後直接修改這個錢的數目
可以看到是可以修改成功
那如果這是實際生活,我們銀行帳號上的錢是不可以被隨意修改的,必須要有認證才可以。
修改如下:
細心的小夥伴可能發現了,我只是加了認證方法,money的訪問修飾符還是public這樣是不可以的,別人依舊可以繞過我們的認證方法,直接去操作我們的money。所以,這裡money的訪問修飾符必須改成private
把訪問修飾符改成private之後我們就不能之前去操作money了,必須通過我們提供的public修飾的方法才可以,這樣我們就可以通過這個方法,來進行控制,保證只有我們認可的用戶才可以修改我們的變量,這樣就安全很多了。
通過上面的例子我們能感受到,通過private修飾符,我們就可以對自己類中的變量進行保護,不讓用戶可以隨便的進行操作,保證了安全。
結合上面的例子和各個訪問修飾符的定義,我們大致就能了解訪問修飾符在程序中的作用了
設立各個成員的界限,讓程序更安全
03訪問修飾符目的
我們都知道java是一門面向對象的設計語言,「封裝」是它的一大特性
封裝(Encapsulation)是面向對象方法的重要原則,就是把對象的屬性和操作(或服務)結合為一個獨立的整體,並儘可能隱藏對象的內部實現細
那麼如何隱藏內部的具體實現,就可以通過訪問修飾符,把不想給別人看見的用private修飾,把暴露給別人的用public實現,這樣就能實現一個基本的封裝。
將上面的例子進行一點點改動
我們在User類中寫了一個增加錢的方法,可如何增加錢調用者並不知道,我們可以一次加100也分兩次加一次加50,調用者只關心結果能不能實現和傳入什麼樣的參數。這其實就是封裝,讓User類變為一個更獨立的整體了。
java通過訪問控制符來加強封裝性,告訴調用者那些是可用的哪些是不可用的,而類的調用者只關心結果就行,不需要關心具體的實現,不僅保證了安全性,也對後期的維護和修改帶來便利。