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