首頁 > Java > java教程 > 物件導向的三大特性之封裝是什麼?實作封裝的方法(程式碼範例)

物件導向的三大特性之封裝是什麼?實作封裝的方法(程式碼範例)

青灯夜游
發布: 2018-11-28 09:36:54
轉載
3195 人瀏覽過

本篇文章帶給大家的內容是介紹物件導向的三大特性之封裝是什麼?實作封裝的方法(程式碼範例)。有一定的參考價值,有需要的朋友可以參考一下,希望對你們有幫助。

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 + "真好玩!");
    }
}
登入後複製

以上是物件導向的三大特性之封裝是什麼?實作封裝的方法(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:cnblogs.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板