天天看點

Java入門系列-15-封裝

為什麼要封裝

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

搜尋關注公衆号「享智同行」,第一時間擷取技術幹貨

繼續閱讀