隱藏和封裝
封裝:
將對象的狀態(tài)信息隱藏在對象內(nèi)部,不允許外部程序直接訪問對象的內(nèi)部信息,而是通過該類所提供的方法來實現(xiàn)對內(nèi)部信息的操作和訪問苞尝。
封裝的目的:
*隱藏類的實際細節(jié)
*在方法里加入控制邏輯鲫售,限制對成員變量不合理的訪問
*可進行數(shù)據(jù)檢查椿疗,從而有利于保證對象信息的完整性
*便于修改,提高代碼可維護性
為實現(xiàn)良好封裝:
#將對象的成員變量和實現(xiàn)細節(jié)隱藏起來膜蠢,不允許外部直接訪問
#把方法暴露出來堪藐,讓方法來控制對這些成員變量進行安全訪問和操作
使用訪問控制符
private、protected狡蝶、public庶橱、(default)
控制級別由小到大:
private:當前類訪問權限贮勃,只能在當前類的內(nèi)部訪問贪惹,用于修飾成員變量
default:包訪問權限,不使用任何控制符時寂嘉,默認為default奏瞬,可以被相同包下的其他類訪問
protected:子類訪問權限,可以被不同包中的子類訪問泉孩,用于修飾方法硼端,通常是希望其子類來重寫這個方法。
pubic:公共訪問權限寓搬,可以被所有類訪問珍昨。
外部類只能使用public和默認
局部變量不能使用訪問控制符來修飾
如果定義了public修飾的類,則文件名必須與public修飾的類名相同
定義一個類,實現(xiàn)良好封裝:
類之外只能通過各自對應的setter和getter方法來操作和訪問類里的成員變量
main方法中操作和訪問該對象的實例:
運行結果:
模塊設計追求高內(nèi)聚镣典、低耦合
訪問控制符使用的基本原則:
*類里的絕大部分變量都應該用private修飾兔毙,只有一些static修飾的類似全局變量的成員變量才考慮public修飾
*如果某個類主要用作其他類的父類,該類里的大部分方法僅希望被其子類重寫兄春,而不想被外界直接調(diào)用澎剥,則應該使用protected 修飾
*希望暴露出來給別的類自由調(diào)用的方法應該用public修飾,類的構造器通過使用public修飾赶舆,從而允許在其他地方創(chuàng)建該類的實例哑姚,大部分外部類都是用public修飾
package、import芜茵、import static
把一個類放在指定的包結構下:
package packageName;
一旦源文件中使用了package語句叙量,意味著該源文件里定義的所有類都屬于這個包。
位于包中的每個類的完整類名都應該是包名和類名的組合
使用如下命令來編譯java文件
javac -d . Hello.java
-d 選項用于設置編譯生成class文件的保存位置九串,這里將指定生成的class文件放在當前路徑宛乃,(. 代表當前路徑),使用命令編譯之后蒸辆,當前路徑?jīng)]有Hello.class文件征炼,而是多了一個Lee的文件夾,文件夾里有Hello.class文件
使用帶-d選項時的javac命令來編譯Java源文件時躬贡,會自動建立對應的文件結構來存放
執(zhí)行
java lee.Hello
如果進入lee路徑下運行則錯誤谆奥,而在lee文件夾所在路徑運行則正常
為Java類添加包必須在Java源文件中通過package語句指定,建議源文件和class文件分開存放
類不在同一個包時拂玻,需要使用全名來調(diào)用酸些,如lee.Hello,來使用