欧美三区_成人在线免费观看视频_欧美极品少妇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條評論
主站蜘蛛池模板: 国产精品一区欧美激情 | 久久精品中文字幕 | 欧美性影院 | 欧美在线播放一区 | 狠狠操夜夜操 | 久久久久国产一区二区三区 | 99免费视频 | 三级成人在线 | 9久久99久久久精品齐齐综合色圆 | 亚洲AV久久久久久久无码 | 偷拍做爰吃奶视频免费看 | 久久久久国产精品一区 | 日本视频a | 久久国产高清视频 | 99久久久国产精品免费99 | 免费高清精品国偷自产在线 | 国产成人av在线播放 | 亚洲欧洲精品成人久久曰影片 | 91亚洲精品一区二区福利 | 亚洲综合视频网 | 三更饺子1最刺激的一段整集 | 久久久9999久久精品小说 | 精品欧美一区二区三区久久久小说 | 成人毛片视频在线观看 | 成人午夜动漫在线观看 | 奇米色吧| 欧美成人a∨高清免费观看 久久亚洲欧美日韩精品专区 | 午夜色a大片在线观看免费 龙珠z在线观看 | www.99av| 久久久久国产一区二区三区四区 | 精品亚洲一区二区三区四区五区 | 久久精品国内一区二区三区 | 99这里只有精品66视频 | 日韩免费在线观看视频 | 精品欧美一区二区三区在线 | 一区二区三区日 | 九九51精品国产免费看 | 欧美另类亚洲 | 操久久久| 狠狠天天| 国产精品人妻无码八区仙踪林 |