public class Man {
目前累計(jì)服務(wù)客戶上1000+,積累了豐富的產(chǎn)品開發(fā)及服務(wù)經(jīng)驗(yàn)。以網(wǎng)站設(shè)計(jì)水平和技術(shù)實(shí)力,樹立企業(yè)形象,為客戶提供成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。成都創(chuàng)新互聯(lián)始終以務(wù)實(shí)、誠(chéng)信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過(guò)對(duì)領(lǐng)先技術(shù)的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究、對(duì)客戶形象的視覺傳遞、對(duì)應(yīng)用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。
//這里是對(duì)屬性的封裝,一個(gè)人的姓名,年齡,妻子都是這個(gè)對(duì)象(人)的私有屬性
private String name;
private int age;
private Woman wife;
//這里是對(duì)改人對(duì)外界提供方法的封裝,可以設(shè)置改男人的妻子,姓名,年齡也可以獲取改男人的姓名和年齡
public void setWife(Woman wife) {
this.wife = wife;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class Woman {
//同樣這里是屬性封裝
private String name;
private int age;
private Man husband;
//方法封裝
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Man getHusband() {
return husband;
}
public void setHusband(Man husband) {
this.husband = husband;
}
}
/**
* 仔細(xì)看就會(huì)發(fā)現(xiàn),Man類沒有提供getWife的方法,這是以為男人不想讓自己的妻子被外界訪問(wèn),
*
* 直接下來(lái)呢,就是封裝可以吧一個(gè)對(duì)象的屬性私有,而提供一些可以被外界訪問(wèn)的屬性的方法,
*
* 比如說(shuō),name屬性,Man和Woman類都有相應(yīng)的get和set方法,外界都可以通過(guò)這些方法訪問(wèn)和修改
*
* 同時(shí)對(duì)一些改對(duì)象不想讓外界訪問(wèn)的屬性,就不提供其方法,比如說(shuō)Man的wife屬性,就沒有g(shù)et方法
*
* 外界是不能帶到Man類的wife屬性的
*
* 呵呵
* 奇怪的是Woman類有husband的get方法,這就是封裝的一點(diǎn),還有的其他朋友也說(shuō)到了
*/
java類中,是分四種級(jí)別的:public,private,保護(hù),和默認(rèn)級(jí)別。其中最常用的是public和private級(jí)別。java類封裝,就是通過(guò)級(jí)別來(lái)控制的。private級(jí)別時(shí),只可以類內(nèi)部訪問(wèn)。public級(jí)別可讓其他人使用。所以封住java類時(shí),只要把你想封裝的類資源寫成private級(jí)別,再在類內(nèi)部給它提供一個(gè)可被他人調(diào)用的public方法,這樣,就實(shí)現(xiàn)了封裝。大概就是這樣吧
在面向?qū)ο笾蟹庋b是指隱藏對(duì)象的屬性和實(shí)現(xiàn)的細(xì)節(jié),僅對(duì)外提供公共訪問(wèn)方式。在類定義中用private關(guān)鍵字來(lái)實(shí)現(xiàn)封裝。封裝有什么好處?
一是用private把類的細(xì)節(jié)與外界隔離起來(lái),從而實(shí)現(xiàn)數(shù)據(jù)項(xiàng)和方法的隱藏,而要訪問(wèn)這些數(shù)據(jù)項(xiàng)和方法唯一的途徑就是通過(guò)類本身,類才有資格調(diào)用它所擁有的資源(方法,數(shù)據(jù)項(xiàng)屬性等等)。所以第一個(gè)好處就是數(shù)據(jù)的安全性提高了。
二是通過(guò)隱藏隔離,只允許外部對(duì)類做有限的訪問(wèn),開發(fā)者可以自由的改變類的內(nèi)部實(shí)現(xiàn),而無(wú)需修改使用該類的那些程序。只要那些在類外部就能被調(diào)用的方法保持其外部特征不變,內(nèi)部代碼就可以自由改變,各取所需,利于分工。
三就是提高了代碼的重用性,封裝成工具類以后能夠減少很多繁瑣的步驟。
以上是比較書面上的解釋,可能不太好理解,舉個(gè)例子吧,你就是一個(gè)對(duì)象,對(duì)于老師來(lái)說(shuō)你可以寫作業(yè),但是你怎么寫,用什么筆寫,什么時(shí)候?qū)懰麄儾⒉魂P(guān)心,只要你按時(shí)寫完就行了。所以你對(duì)于老師公開的(public)是寫作業(yè)這個(gè)行為(方法),具體你怎么寫的用什么寫是你自己私有的(private)屬性(property)或者方法(function),封裝在你本身(class)里面了。
說(shuō)給人家聽,我們就說(shuō)的通俗簡(jiǎn)單點(diǎn): 代碼封裝的好處:第一點(diǎn)在于安全,JAVA中類的一個(gè)屬性,我們一般會(huì)在類中將其私有化然后getter和setter方法對(duì)外提供得到和設(shè)置的方法,這就好比自動(dòng)存提款機(jī),錢就是我們要的屬性,要的數(shù)據(jù),放在那直接去拿可以嗎?很明顯不行,所以自動(dòng)存提款機(jī)提供了取錢的方法和存錢方法,而你不用知道錢從哪來(lái)要到哪里去。第二點(diǎn)在于方便:方法也是封裝的一種體現(xiàn),有一個(gè)功能我們要反復(fù)調(diào)用,每次寫同樣的代碼嗎?答案很明顯,不要!,我們寫個(gè)方法,把這段功能代碼封裝成一個(gè)方法,需要的時(shí)候調(diào)用方法名就可以了,不是嗎? 關(guān)于package:如果一個(gè)項(xiàng)目很大的話,會(huì)分成很多小組,每個(gè)小組會(huì)有很多開發(fā)人員,大家在編寫代碼時(shí)說(shuō)不定會(huì)出現(xiàn)同樣的類名,問(wèn)題就來(lái)了,我在調(diào)類的時(shí)候,調(diào)的是哪個(gè)?所以每個(gè)小組用不同的包名,這樣來(lái)區(qū)分類所在的位置。好,如果你說(shuō)項(xiàng)目編碼之前詳細(xì)設(shè)計(jì)說(shuō)的很清楚了,類不可能出現(xiàn)同名,那么包的另外一個(gè)好處在于相似用途的類放在一個(gè)包下可以方便管理和查找,比如java.util包,如查沒有包的存在,我想查API看有哪些集合框架,你說(shuō)方便不 權(quán)限修飾符的作用就是:你很有錢,你愿意告訴誰(shuí)你很有錢需要的時(shí)候可以來(lái)找你,你的親屬?你的兒子?還是全世界的所有人?你自己有必要告訴誰(shuí) 那么他們?nèi)卞X的時(shí)候就會(huì)想到你
類的封裝性即不能讓外面的類隨意修改一個(gè)類的成員變量;
在定義一個(gè)類的成員,使用private關(guān)鍵字說(shuō)明這個(gè)成員的訪問(wèn)權(quán)限,只能被這個(gè)類的其他成員方法調(diào)用,而不能被其他的類中的方法所調(diào)用;
為實(shí)現(xiàn)封裝性,常將類的成員變量聲明為private,再通過(guò)public的方法來(lái)對(duì)這個(gè)變量進(jìn)行訪問(wèn)。對(duì)一個(gè)變量的操作,一般都有 讀取和賦值操作,我們一般定義兩個(gè)方法來(lái)實(shí)現(xiàn)這兩種操作,即:getxxx()與setxxx();
一個(gè)類就是一個(gè)模塊,我們應(yīng)該讓模塊僅僅公開必須要讓外界知道的內(nèi)容,而隱藏其他的一切內(nèi)容。再進(jìn)行程序設(shè)計(jì)時(shí),應(yīng)盡量避免一個(gè)模塊直接修改或操作另一個(gè)模塊的數(shù)據(jù),模塊設(shè)計(jì)追求強(qiáng)內(nèi)聚,弱耦合。