亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

java 第七課 隱藏和封裝

系統 2003 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條評論
主站蜘蛛池模板: 四虎网站在线观看 | 国产羞羞事1000部在线观看 | 欧美一级欧美一级毛片 | 国产系列欧美系列日韩系列在线 | 国产精品久久久久久久免费 | 一级爱| 久久国产视频在线观看 | 中国第一毛片 | 亚洲欧美自拍另类图片色 | 久草久热| 亚洲国产99999在线精品一区 | 中国xxxwww| 久久久久久久尹人综合网亚洲 | 亚洲六月丁香色婷婷综合久久 | 国产成人18黄禁网站免费观看 | 久久精品国产欧美日韩99热 | 四虎免费看黄 | 日韩欧美精品有码在线观看 | 大片刺激免费播放视频 | 亚洲欧美精选 | 日本亚洲欧洲高清有码在线播放 | 香蕉久久久久 | 天天操夜夜操免费视频 | 高清二区 | 国产成人免费在线 | 四虎成人影视 | 国产成人精品男人的天堂538 | 九九夜色| 天天干天天舔天天射 | 国产成人理在线观看视频 | 成在线人永久免费播放视频 | 日本成人毛片 | 高清色视频 | 97精品视频在线观看 | 日本黄色网址视频 | 欧美一级毛片图 | 男女一级特黄a大片 | chinese456老人gay chinese国产xxxx中国 | 国产另类图片 | 亚洲一区二区三区麻豆 | 久久天天躁狠狠躁夜夜2020一 |