封裝:把屬性和方法私有,僅對外提供訪問方式。
封裝有幾種類型:類的封裝:將方法和屬性寫進類中就是類的封裝。方法的封裝:對外提供訪問權限,僅在該類中有效。數據封裝:(同上)。
封裝的好處:降低耦合率 可重復調用類中的屬性 提高安全性
1,封裝數據代碼實現:
class Person {
private int age;
public void setter(int a) {
System.out.println("gtter" + this);
this.age = a;
}
public int getter() {
System.out.println("gtter" + this);
return this.age;
}
}
public class Demo1 {
public static void main(String[] args) {
Person p = new Person();
p.setter(80);
p.getter();
int b = p.getter();
}
}
this是什么玩意?對于我而言在暑假this就是代表當前對象,今天有了更新的認識this代表了當前對象的地址,了解了內存圖解就好了解了。我們定義一個setter()方法在電腦里是setter(this),在main方法里我調用setter,在電腦里就是setter(p),在創建對象時p指向對象的地址,p將地址以隱式參數的形式傳給this,那么在方法中打印this就是打印地址。我上面的setter,getter方法都不能用static。
2,通過封裝,保證屬性的合法性:
package com.lishuai.fuxi.www;
class People5 {
private int age;
private String name;
public int getAge() {
if (age < 0 || age > 150) {
System.out.println("你輸入的年齡非法");
return 00000;
} else {
return age;
}
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class FengZhuang {
public static void main(String[] args) {
// TODO Auto-generated method stub
People5 p=new People5();
p.setAge(180);
p.setName("lilei");
int i=p.getAge();
System.out.println(p.getName()+"-- -- "+i);
}
}
我們通過封裝技術,將屬性私有化,讓調用者無法隨意賦值,當賦值錯誤時,通過get方法返回來的數據將是錯誤數據,并將會提示錯誤。
封裝技術將使我們的屬性更安全。