欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

java 第七課 隱藏和封裝

系統 1837 0
ˉ 理解封裝
封裝(Encapsulation)是 面向對象三大特征之一 (封裝、繼承、多態),它指的是將對象的狀態信息隱藏在內部, 不允許 外部程序直接訪問對象內部信息,而是通過該類所提供的方法來實現對內部信息的操作和訪問。
對一個類或對象實現良好的封裝,可以實現以下目的:
μ 隱藏類的實現細節。
μ 讓使用者只能通過事先預定的方法訪問數據,從而可以在該方法里加入控制邏輯,限制對屬性不合理訪問。
μ 可進行數據檢查,從而有利于保證對象信息的完整性。
μ 便于修改,提高代碼的可維護性。
為了實現良好的封裝,需要從兩個方面考慮:
μ 將對象的屬性和實現細節隱藏起來,不允許外部直接訪問。
μ 把方法暴露出來,讓方法來操作或訪問這些屬性。
隱藏和封裝
使用訪問控制符




注意:對于類而言,可以使用public和默認訪問控制符修飾,使用public修飾的類可以被所有類使用,不使用任何訪問控制符修飾的類只能被同一個包中的所有類訪問。
定義Person類,實現良好的封裝。
public class Person{
private String name;
private int age;
public void setName(String name) {
//要求用戶名必須在2~6位之間
if (name.length() > 6 || name.length() < 2){
System.out.println("您設置的人名不符合要求");
}else{
this.name = name;
}
}

public String getName(){
return this.name;
}
public void setAge(int age){
//要求用戶年齡必須在0~100之間
if (age > 100 || age < 0){
System.out.println("您設置的年齡不合法");
}else{
this.age = age;
}
}
public int getAge(){
return this.age;
}
}
注意:屬性的getter方法和setter方法有重要的意義,命名應遵循的原則:將原屬性名的首字母大寫,并在前面分別增加set和get動詞,就變成setter和getter方法名 。
訪問控制符的使用總結:
μ 類中絕大部分屬性應該使用 private 修飾,除了一些static修飾的、類似全局變量的屬性,才考慮使用 public 修飾。
μ 有些方法只是用于輔助實現該類的其他方法,這些方法被稱為工具方法,也應用 private 修飾。
μ 如果某個類主要用作其他類的父類,該類里包含的大部分方法可能僅希望被其子類重寫,而不想被外界直接調用,則應該使用protected修飾這些方法。
μ 希望暴露出來給其他類自由調用的方法使用public修飾。
μ 頂級類通常都希望被其他類自由使用,所以大部分頂級類都使用public修飾。
ˉ package和import
μ 包: Java中,包(package)是一組相關的類和接口的集合。Java編譯器將包與文件系統的目錄一一對應起來。
μ
μ
優點:
ü 避免大量類的重名沖突,擴大名字空間。
ü 包體現了 封裝機制
μ 包的創建: 如果希望把一個類放在指定的包結構下,應該在Java源程序的 第一個非注釋行 放如下格式的代碼:package packageName[.packageName[…]];
μ
例4.18 包的創建。
package hbsi;
public class HelloWorld{
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
注意:
ü 包名是有效地標識符即可,但從可讀性規范角度來看,包名應該全部由小寫字母組成。
ü 為了避免不同公司之間類名的重復,Sun建議使用單位Internet域名倒寫來作為包名,
ü package語句必須作為源文件的第一句非注釋性語句,一個源文件只能指定一個包,該源文件中可以定義多個類,則這些類將全部位于該包下。
ü 如果沒有顯示指定package語句,則處于無名包下。實際企業開發中,通常不會把類定義在無名包下。
μ 包中類的使用
如果要使用包中的類,可以有兩種方法:
ü 引用包中的類(使用類的全限定名稱)myPackage . mySubPackage . Book bookObj=new myPackage . mySubPackage . Book ();
ü import語句引入包中的類
格式:import 包名 . 類名;
或 import 包名 . *; //“*”號表示所有類
例如: import myPackage . mySubPackage.*;
Book bookObj=new Book();
注意:在引入具有層次結構的包時,“*”號僅僅表示該包中的所有類,如果該包中還有子包,那么子包中的類時不被包括的。

μ 比較兩種方法的優缺點:
ü 適用包名作前綴的方法使程序清晰,很容易就看出所使用的類位于哪個包中;而引入包的方法要知道某個類所在的包比較困難.
ü 使用 引入包的方法會帶來名字沖突 的問題,而使用包名作前綴不會存在這樣的問題.
ü 使用包名作前綴書寫程序時比較麻煩.
μ 靜態導入
JDK1.5以后更是增加了一種靜態導入的語法,它用于導入指定類的某個靜態屬性值或全部靜態屬性值。
ü 導入指定類單個靜態屬性
import static 父包.子包…類名.靜態屬性名;
例:import static java.lang.System.out;
ü 導入指定類全部靜態屬性
import static 父包.子包…類名.*;
例:import static java.lang.Math.*;


java 第七課 隱藏和封裝


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲成人免费视频 | 国产成年网站v片在线观看 中文字幕在线免费视频 | 极品美女aⅴ高清在线观看 一级片片 | 天天做天天欢天天爽 | 成人禁在线观看网站 | 久久久久久国产精品免费免费狐狸 | 天天色亚洲 | 久久99久久99精品免观看不卡 | 日韩中文有码高清 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产午夜精品理论片 | 午夜亚洲国产成人不卡在线 | 一级毛片免费播放 | 久久人人爱 | 狠狠躁躁夜夜躁波多野结依 | 日韩欧美小视频 | 久久爱伊人| 欧美一级二级在线观看 | 国产精品中文字幕在线观看 | 色精品| 欧美视屏一区二区 | 久在线看| 魔法骑士在线观看免费完整版 | 免费日本毛片 | 毛片免费观看视频 | 97超级碰碰在线看视频免费超 | 丁香六月啪 | 最新av在线网址 | 免费一区 | 国产在线a | 国产a视频| 亚洲熟妇毛茸茸 | 久草欧美视频 | 成年视频在线观看免费 | 一级午夜a毛片免费视频 | 成人午夜网站 | 成人免费视频 | 午夜家庭影院 | 久久色网 | 日韩无套| 日韩精品一区二区三区中文在线 |