1. 程式人生 > >java 面向物件 封裝

java 面向物件 封裝

1.封裝是什麼?以及為什麼要進行封裝?

通常情況下可以給成員變數賦值一些合法但不合理的數值,這種情況在編譯階段和執行階段都不會報錯或給出任何的提示資訊,此數值雖然合法但與現實生活不符;為了避免上述問題的發生,就需要對成員變數進行密封包裝處理來保證該成員變數的合法合理性,這種機制就叫做封裝。封裝可以被認為是一個保護屏障,防止該類的程式碼和資料被外部類定義的程式碼隨機訪問。要訪問該類的程式碼和資料,必須通過嚴格的介面控制。 2.如何進行封裝? (1)私有化成員變數,使用private關鍵字修飾; (2)提供公有的get和set方法,在方法體中進行合理值的判斷,使用public關鍵字修飾; (3)在構造方法中使用set方法進行合理值的判斷;

3.事例如下/Person.java/

/*
     程式設計實現Person類的封裝
 */
public class Person{
    //1.私有化成員變數,使用private關鍵字修飾
    private String name; 
    private int age;
    private String country;
    //使用static關鍵字修飾成員變量表示提升為類層級只有一份被所有物件共享
    //public static String country;

    //3.在構造方法中呼叫set方法進行合理值的判斷
    public Person(){
    }
    public Person(String name, int age, String country){
        setName(name);
        setAge(age);
        setCountry(country);
    }

    //2.提供公有的get和set方法,在方法體中進行合理值的判斷
    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 < 150){
            this.age = age;
        }else{
            System.out.println("年齡不合理!!!");
        }
    }
    public String getCountry(){
        return country;
    }
    public void setCountry(String country){
        this.country = country;
    }

    public void show(){
        System.out.println("我是" + getName() + ",今年" + getAge() + "歲了,來自" + getCountry() + "!");
    }

    //自定義成員方法描述吃飯的行為
    public void eat(String food){
        System.out.println(food + "真好吃!");
    }
    //自定義成員方法描述娛樂的行為
    public void play(String game){
        System.out.println(game + "真好玩!");
    }
}