####封裝(Encapsulation)
*封裝就是把不想或者不該告訴別人的東西隱藏起來(lái)败砂,把可以告訴別人的公開(kāi)(隱藏對(duì)象的屬性個(gè)方法的實(shí)現(xiàn)細(xì)節(jié)赌渣,只公開(kāi)對(duì)外接口)
*具體做法就是把屬性私有化,提供共有的方法訪問(wèn)這些屬性昌犹,在這些共有方法中實(shí)現(xiàn)對(duì)屬性的控制
public class Student2 {
private String name; // 姓名
private int rp;??????// 人品(取值在1-10之間坚芜,越高越好)
public int getRp() {
return rp;
}
//提供共有的方法訪問(wèn)私有屬性,可以在方法中實(shí)現(xiàn)對(duì)屬性的控制斜姥。
public void setRp(int rp) {
if (rp < 1 || rp > 10) {
System.out.println("錯(cuò)誤鸿竖!人品值應(yīng)該在1-10之間沧竟!");
this.rp = 1;//人品不符合要求,賦予默認(rèn)值1
} else {
this.rp = rp;
}
…………
}
public static void main(String[] args) {
Student2 xiaoxin = new Student2();//實(shí)例化學(xué)員對(duì)象,對(duì)其屬性進(jìn)行初始化
xiaoxin.setName("小新");
xiaoxin.setRp(-1);
//小新自我介紹
xiaoxin.introduction();
}
*設(shè)置私有屬性的值的方法缚忧,稱為設(shè)置訪問(wèn)器
*取得私有屬性的值的方法悟泵,稱為獲取訪問(wèn)器
*訪問(wèn)器的標(biāo)準(zhǔn)寫法:
*setter
* set+要訪問(wèn)的私有屬性,將首字母大寫闪水。
* 只能有一個(gè)參數(shù)糕非,一般這個(gè)參數(shù)的類型和要訪問(wèn)的屬性類型相同,不能有返回值
public void setAge(int a){
if (a>100 || a<0) {
age = 18;
}else {
age = a;
}
}
public void setName(String n){
name = n;
}
*getter
* get+要訪問(wèn)的私有屬性的名字球榆,首字母大寫朽肥。
* 返回值類型需要和要訪問(wèn)的屬性類型一致,但不能有參數(shù)
public int getAge(){
return age;
}
public String getName(){
return name;
}
####訪問(wèn)修飾符:
*public 共有的持钉,最高的訪問(wèn)級(jí)別衡招,類的public成員所有類的成員都可以訪問(wèn)。
*protected 受保護(hù)的每强,類的protected成員只能被該類的成員以及其子類成員訪問(wèn)蚁吝,還可以被同一個(gè)包中其他類的成員訪問(wèn)。
*默認(rèn) 類的成員什么修飾符都沒(méi)有舀射,又叫包修飾符,只有類本身成員和當(dāng)前包下類的成員可以訪問(wèn)怀伦。
*private 私有的脆烟。不對(duì)外公開(kāi),類的private成員只能被該類的成員訪問(wèn)房待,訪問(wèn)級(jí)別最低邢羔。
####方法重載的特點(diǎn):
*在同一個(gè)類中發(fā)生。
*方法名相同桑孩。
*參數(shù)列表不同
* 其中參數(shù)列表的不同可以是:個(gè)數(shù)不同拜鹤,順序不同,類型不同流椒。
public int substract(int a,int b){
return a-b;
}
public int substract(int a,int b,int c){
return a-b-c;
}
public double substract(double a,double b){
return a-b;
}
public String add(int a,String b){
return a+b;
}
public String add(String a,String b){
return a+b;
}
####構(gòu)造方法(constructor)
*構(gòu)造方法是一個(gè)特殊的方法敏簿。java中的每個(gè)類都有構(gòu)造方法,用來(lái)初始化該類的一個(gè)對(duì)象宣虾。
*構(gòu)造方法名和類名相同惯裕,沒(méi)有返回類型。
*構(gòu)造方法可以重載
*構(gòu)造方法只能由new關(guān)鍵字和this()調(diào)用绣硝,this()只能在構(gòu)造方法中使用蜻势,用來(lái)調(diào)用其他構(gòu)造方法,且只能作為構(gòu)造方法代碼體的第一條語(yǔ)句鹉胖。
public class Student4 {
private String name; // 姓名
private int rp;??????// 人品(取值在1-10之間握玛,越高越好)
private String sex;??// 性別
//無(wú)參數(shù)的構(gòu)造方法够傍,初始化學(xué)員的所有屬性
public Student4() {
this.name = "小新";
this.rp = 10;
this.sex = "男";
}
…………}
public static void main(String[] args) {
//實(shí)例化學(xué)員對(duì)象對(duì)其屬性進(jìn)行初始化
Student4 xiaoxin = new Student4();??//new關(guān)鍵字調(diào)用無(wú)參的構(gòu)造方法
//小新自我介紹
xiaoxin.introduction();
}
*有參構(gòu)造
public class Student5 {
…………
//帶參數(shù)的構(gòu)造方法,初始化學(xué)員的所有屬性
public Student5(String name, int rp, String sex) {
this.name = name;
if (rp < 1 || rp > 10) {
System.out.println("錯(cuò)誤挠铲!人品值應(yīng)該在1-10之間冕屯!");
this.rp = 1;//人品不符合要求,賦予默認(rèn)值
} else {
this.rp = rp;
}
this.sex = sex;
}
………….
}
public static void main(String[] args) {
//實(shí)例化學(xué)員對(duì)象對(duì)其屬性進(jìn)行初始化
Student5 xiaoxin = new Student5("小新",10,"男");
//小新自我介紹
xiaoxin.introduction();
}