隱藏和封裝
封裝:
將對象的狀態(tài)信息隱藏在對象內(nèi)部,不允許外部程序直接訪問對象的內(nèi)部信息,而是通過該類所提供的方法來實現(xiàn)對內(nèi)部信息的操作和訪問。
封裝的目的:
*隱藏類的實際細節(jié)
*在方法里加入控制邏輯,限制對成員變量不合理的訪問
*可進行數(shù)據(jù)檢查,從而有利于保證對象信息的完整性
*便于修改,提高代碼可維護性
為實現(xiàn)良好封裝:
#將對象的成員變量和實現(xiàn)細節(jié)隱藏起來,不允許外部直接訪問
#把方法暴露出來,讓方法來控制對這些成員變量進行安全訪問和操作
使用訪問控制符
private、protected、public、(default)
控制級別由小到大:

private:當前類訪問權(quán)限,只能在當前類的內(nèi)部訪問,用于修飾成員變量
default:包訪問權(quán)限,不使用任何控制符時,默認為default,可以被相同包下的其他類訪問
protected:子類訪問權(quán)限,可以被不同包中的子類訪問,用于修飾方法,通常是希望其子類來重寫這個方法。
pubic:公共訪問權(quán)限,可以被所有類訪問。
外部類只能使用public和默認
局部變量不能使用訪問控制符來修飾
如果定義了public修飾的類,則文件名必須與public修飾的類名相同
定義一個類,實現(xiàn)良好封裝:

類之外只能通過各自對應的setter和getter方法來操作和訪問類里的成員變量
main方法中操作和訪問該對象的實例:

運行結(jié)果:

模塊設計追求高內(nèi)聚、低耦合
訪問控制符使用的基本原則:
*類里的絕大部分變量都應該用private修飾,只有一些static修飾的類似全局變量的成員變量才考慮public修飾
*如果某個類主要用作其他類的父類,該類里的大部分方法僅希望被其子類重寫,而不想被外界直接調(diào)用,則應該使用protected 修飾
*希望暴露出來給別的類自由調(diào)用的方法應該用public修飾,類的構(gòu)造器通過使用public修飾,從而允許在其他地方創(chuàng)建該類的實例,大部分外部類都是用public修飾
package、import、import static
把一個類放在指定的包結(jié)構(gòu)下:
package packageName;
一旦源文件中使用了package語句,意味著該源文件里定義的所有類都屬于這個包。
位于包中的每個類的完整類名都應該是包名和類名的組合

使用如下命令來編譯java文件
javac -d . Hello.java
-d 選項用于設置編譯生成class文件的保存位置,這里將指定生成的class文件放在當前路徑,(. 代表當前路徑),使用命令編譯之后,當前路徑?jīng)]有Hello.class文件,而是多了一個Lee的文件夾,文件夾里有Hello.class文件

使用帶-d選項時的javac命令來編譯Java源文件時,會自動建立對應的文件結(jié)構(gòu)來存放
執(zhí)行
java lee.Hello
如果進入lee路徑下運行則錯誤,而在lee文件夾所在路徑運行則正常
為Java類添加包必須在Java源文件中通過package語句指定,建議源文件和class文件分開存放

類不在同一個包時,需要使用全名來調(diào)用,如lee.Hello,來使用