把屬性和方法私有,僅提供對外的訪問方式---封裝

封裝:把屬性和方法私有,僅對外提供訪問方式。
封裝有幾種類型:類的封裝:將方法和屬性寫進類中就是類的封裝。方法的封裝:對外提供訪問權限,僅在該類中有效。數據封裝:(同上)。
封裝的好處:降低耦合率 可重復調用類中的屬性 提高安全性
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方法返回來的數據將是錯誤數據,并將會提示錯誤。
封裝技術將使我們的屬性更安全。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容