1. 程式人生 > >Java學習——private實現封裝處理

Java學習——private實現封裝處理

Java封裝處理(private封裝)

所謂封裝,也就是把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。簡而言之就是,內部操作對外部而言不可見(保護性) 。

封裝是面向物件裡最複雜的概念,使用private關鍵字實現的封裝處理只是封裝的第一步。

看一段程式碼,無封裝的程式

class Person{
    public String name;
    public int age;
    public void printName(){
        System.out.println(this.name);
    }
}

public class Test{
    public static void main(String[] args) {
        Person person1 = new Person();
        person1.name = "張三" ;
        person1.age = 20;
        person1.printName();
    }
}

在無封裝的程式中我們可以在主類中通過物件直接訪問到Person類中的屬性。此時,要回避此類問題,讓內部操作對外部不可見(物件不能直接操作屬性),可以使用private進行封裝。

將姓名、年齡許可權設定為private,即私有,訪問許可權僅限於類的內部。設定完以後我們無法通過物件直接訪問名字和年齡屬性了,這時我們需要留出一個訪問的介面,即set、get函式。

class Person{
    private String name;
    private int age;
    public void printName(){
        System.out.println(this.name);
    }
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return this.name;
    }
    public void setAge(int age){
        this.age = age;
    }
    public int getAge(){
        return this.age;
    }
}

public class Test{
    public static void main(String[] args) {
        Person person1 = new Person();
        person1.setName("張三");
        person1.setAge(20);
        System.out.println("姓名" + person1.getName());
        System.out.println("年齡" + person1.getAge());
    }
}

其中set、get函式是public,在外部可以訪問,在外部我們可以通過這2種函式實現對屬性的訪問,但無法直接訪問到屬性值。在主類中我們通過setName、getName可以訪問到Person類的屬性。private實現封裝的最大特徵在於:只允許本類訪問,而不允許外部類訪問。

類的設計原則

1.類中的所有屬性必須使用private封裝。

2.屬性若要被外部訪問,必須定義setter、getter方法。