為什麼要封裝
Student stu=new Student();
stu.age=-10;
上面的代碼中 age 屬性被随意通路,容易産生不合理的指派
什麼是封裝
封裝:将類的某些資訊隐藏在内部,不允許外部程式直接通路,而是通過該類提供的方法來實作對隐藏資訊的操作和通路。
封裝是面向對象三大特征之一
封裝後隐藏了類的實作細節,友善我們加入控制語句保證資料安全性,友善修改實作。
Java 中實作封裝可以用以下3步實作:
1.修改屬性的可見性,設為 private (類外部無法通路)
2.建立共有的 getter/setter 方法用于屬性讀寫
3.在 getter/setter 方法中加入屬性控制語句
public class Student {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if(age>0&&age<=100) {//年齡大于0小于100
this.age = age;
}else {
this.age=18;//預設值
}
}
public static void main(String[] args) {
Student stu1=new Student();
//給屬性指派
stu1.setAge(10);
stu1.setName("張三");
//使用屬性的值
System.out.println(stu1.getName()+" 的年齡為:"+stu1.getAge());
Student stu2=new Student();
stu2.setAge(110);
stu2.setName("李四");
System.out.println(stu2.getName()+" 的年齡為:"+stu2.getAge());
}
}
在使用 private 關鍵字修飾屬性之後,就不能再直接通路屬性了,而是需要通過 getter 和 setter 方法進行取值和指派。
在 Eclipse 中可以使用 Shift+Alt+S+R 自動生成 getter/setter
在 Idea 中使用 Alt+Insert 後選擇 Getter and Setter
搜尋關注公衆号「享智同行」,第一時間擷取技術幹貨