封裝在java中有兩種表現(xiàn)
創(chuàng)新互聯(lián)主營囊謙網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都App定制開發(fā),囊謙h5微信小程序搭建,囊謙網(wǎng)站營銷推廣歡迎囊謙等地區(qū)企業(yè)咨詢
1.用類封裝一個(gè)事物的屬性和方法。
2.用方法來封裝一個(gè)固定的算法。
樓上所說的其實(shí)是封裝的程度不一樣,在面向?qū)ο蟮男g(shù)語中粒度來表示這個(gè)程度。
封裝其實(shí)是要看情況而定的,如果你這個(gè)類是描述人的,需要這個(gè)人完成一些基本的動作,如吃飯,走路,那么就不用把細(xì)胞也封裝進(jìn)來。但是如果“人”這個(gè)類,需要做醫(yī)學(xué)的研究用,那么就需要封裝細(xì)胞這個(gè)屬性了。
代碼打多了就自然能理解了,不是一個(gè)復(fù)雜的概念。呵呵。
說給人家聽,我們就說的通俗簡單點(diǎn): 代碼封裝的好處:第一點(diǎn)在于安全,JAVA中類的一個(gè)屬性,我們一般會在類中將其私有化然后getter和setter方法對外提供得到和設(shè)置的方法,這就好比自動存提款機(jī),錢就是我們要的屬性,要的數(shù)據(jù),放在那直接去拿可以嗎?很明顯不行,所以自動存提款機(jī)提供了取錢的方法和存錢方法,而你不用知道錢從哪來要到哪里去。第二點(diǎn)在于方便:方法也是封裝的一種體現(xiàn),有一個(gè)功能我們要反復(fù)調(diào)用,每次寫同樣的代碼嗎?答案很明顯,不要!,我們寫個(gè)方法,把這段功能代碼封裝成一個(gè)方法,需要的時(shí)候調(diào)用方法名就可以了,不是嗎? 關(guān)于package:如果一個(gè)項(xiàng)目很大的話,會分成很多小組,每個(gè)小組會有很多開發(fā)人員,大家在編寫代碼時(shí)說不定會出現(xiàn)同樣的類名,問題就來了,我在調(diào)類的時(shí)候,調(diào)的是哪個(gè)?所以每個(gè)小組用不同的包名,這樣來區(qū)分類所在的位置。好,如果你說項(xiàng)目編碼之前詳細(xì)設(shè)計(jì)說的很清楚了,類不可能出現(xiàn)同名,那么包的另外一個(gè)好處在于相似用途的類放在一個(gè)包下可以方便管理和查找,比如java.util包,如查沒有包的存在,我想查API看有哪些集合框架,你說方便不 權(quán)限修飾符的作用就是:你很有錢,你愿意告訴誰你很有錢需要的時(shí)候可以來找你,你的親屬?你的兒子?還是全世界的所有人?你自己有必要告訴誰 那么他們?nèi)卞X的時(shí)候就會想到你
封裝就是隱藏實(shí)現(xiàn)細(xì)節(jié)
將屬性私有化
提供公有方法訪問私有屬性。
類是基于面向?qū)ο笏枷刖幊陶Z言的基礎(chǔ)
程序員可以把具有相同業(yè)務(wù)性質(zhì)的代碼封裝到一個(gè)類里
通過接口方法向外部代碼提供服務(wù)
同時(shí)向外部代碼屏蔽類里服務(wù)的具體實(shí)現(xiàn)方式。對象是類的實(shí)例
類一般是個(gè)抽象名詞
比如“人類”
而對象則是具體的物質(zhì)存在
比如“張三”
這個(gè)人。在現(xiàn)實(shí)生活中
經(jīng)常會遇到“類”
和“對象”
這些概念
比如封裝了能實(shí)現(xiàn)“全自動洗衣機(jī)”
功能的洗衣機(jī)類。這里
用戶可以使用面板上的按鈕
使用該類里提供的洗衣等服務(wù)并且
由于該類實(shí)現(xiàn)了封裝
所以在使用的時(shí)候
用戶可以不用了解其中的自動洗衣原理以及實(shí)現(xiàn)機(jī)制。
類是同一種類型的對象的抽象
是某種類型對象的概述和定義
而對象則是某個(gè)類的實(shí)例化結(jié)果或者叫一種類型的實(shí)體。在使用面向?qū)ο蟮乃枷脒M(jìn)行軟件開發(fā)的過程中
首先得抽出項(xiàng)目的實(shí)體-對象模型
即首先是實(shí)體類的定義、封裝。
這段代碼也是醉了,你存入list應(yīng)該是一個(gè)對象Person,
而你給一組數(shù)組賦值我也是沒搞懂你的意思,
你這樣寫代碼能存入list集合的只是一個(gè)Person對象,而你給對象字段賦值的語句就只有p.name = s.next();?p.pingjun = (rr / (a.length - 1)) + "";,只有2個(gè)屬性付了值,其他的沒有賦值是null;
一個(gè)構(gòu)造器給Person的數(shù)組賦值?一個(gè)長度20的字符空數(shù)組,然后你給w數(shù)組賦值,那么你這樣子賦值你以為可以影響到Person的值?w[i] = u + "";這句代碼,與Person對象沒半毛錢關(guān)系,對象引用都沒有怎么賦值,
你最后打印的是Person對象的字段,而你存入一個(gè)空數(shù)組,然后把string類型字段的原始屬性給一個(gè)數(shù)組,Person(String r[]) {
r[1] = this.yuwen;
r[2] = this.shuxve;
r[3] = this.wuli;
r[4] = this.waiyu;
r[5] = this.huaxve;
}
這有啥用,我很好奇你這個(gè)r數(shù)組也不是類中的字段,你給他付了null的值,你給他傳入的是長度20的數(shù)組,后面還有15個(gè)長度呢,不管這個(gè),關(guān)鍵是這個(gè)數(shù)組啥用也沒有除了浪費(fèi)內(nèi)存
下面這段代碼中l(wèi)ist.add(p);,你把Person 對象存入list,此時(shí)的Person 對象被賦值的就只有2個(gè)字段,你給w,r數(shù)組的值無法影響到Person 對象,且這個(gè)方法執(zhí)行完畢后,也會被清理掉因?yàn)闆]有被引用到
這個(gè)時(shí)候可以回答你的問題了,為什么你輸入的分?jǐn)?shù)顯示都是null:
因?yàn)樗紱]被賦值到Person 的成員變量上面,沒被賦值的成員變量的String值是null,容易你打印Person 未被賦值的成員變量的值,就是null;
String r[] = new String[a.length - 2];
String w[] = new String[20];
int rr = 0;
Person p = new Person(w);
p.name = s.next();
for (int i = 1; i a.length - 1; i++) {
int u = s.nextInt();
w[i] = u + "";
r[i - 1] = u + "";
rr += u;
}
p.pingjun = (rr / (a.length - 1)) + "";
list.add(p);
public class Man {
//這里是對屬性的封裝,一個(gè)人的姓名,年齡,妻子都是這個(gè)對象(人)的私有屬性
private String name;
private int age;
private Woman wife;
//這里是對改人對外界提供方法的封裝,可以設(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ì)看就會發(fā)現(xiàn),Man類沒有提供getWife的方法,這是以為男人不想讓自己的妻子被外界訪問,
*
* 直接下來呢,就是封裝可以吧一個(gè)對象的屬性私有,而提供一些可以被外界訪問的屬性的方法,
*
* 比如說,name屬性,Man和Woman類都有相應(yīng)的get和set方法,外界都可以通過這些方法訪問和修改
*
* 同時(shí)對一些改對象不想讓外界訪問的屬性,就不提供其方法,比如說Man的wife屬性,就沒有g(shù)et方法
*
* 外界是不能帶到Man類的wife屬性的
*
* 呵呵
* 奇怪的是Woman類有husband的get方法,這就是封裝的一點(diǎn),還有的其他朋友也說到了
*/
新聞名稱:java程序封裝屬性代碼 java中封裝的定義
網(wǎng)址分享:http://jinyejixie.com/article34/hehdse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、外貿(mào)建站、網(wǎng)站制作、網(wǎng)站排名、微信公眾號、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)