C語言中文網 目錄

Java類的封裝

封裝就是將對象的屬性和方法相結合,通過方法將對象的屬性和實現細節保護起來,實現對象的屬性隱藏。做法就是:修改屬性的可見性來限制對屬性的訪問,并為每個屬性創建一對取值(getter)方法和賦值(setter)方法,用于對這些屬性的訪問。

實現封裝的具體步驟如下:
  1. 修改屬性的可見性來限制對屬性的訪問。
  2. 為每個屬性創建一對賦值方法和取值方法,用于對這些屬性的訪問。
  3. 在賦值和取值方法中,加入對屬性的存取限制。

例 1

下面以一個員工類的封裝為例介紹封裝過程。一個員工的主要屬性有姓名、年齡、聯系電話和家庭住址。假設員工類為 Employee,示例如下:
public class Employee
{
    private String name;    //姓名
    private int age;    //年齡
    private String phone;    //聯系電話
    private String address;    //家庭住址
    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<18||age>40)
        {
            System.out.println("年齡必須在18到40之間!");
            this.age=20;    //默認年齡
        }
        else
        {
            this.age=age;
        }
    }
    public String getPhone()
    {
        return phone;
    }
    public void setPhone(String phone)
    {
        this.phone=phone;
    }
    public String getAddress()
    {
        return address;
    }
    public void setAddress(String address)
    {
        this.address=address;
    }
}

如上述代碼所示,使用 private 關鍵字修飾屬性,這就意味著除了 Employee 類本身外,其他任何類都不可以訪問這些屬性。但是,可以通過這些屬性的 setXxx() 方法來對其進行賦值,通過 getXxx() 方法來訪問這些屬性。

在 age 屬性的 setAge() 方法中,首先對用戶傳遞過來的參數 age 進行判斷,如果 age 的值不在 18 到 40 之間,則將 Employee 類的 age 屬性值設置為 20,否則為傳遞過來的參數值。

編寫測試類 EmployeeTest,在該類的 main() 方法中調用 Employee 屬性的 setXxx() 方法對其相應的屬性進行賦值,并調用 getXxx() 方法訪問屬性,代碼如下:
public class EmployeeTest
{
    public static void main(String[] args)
    {
        Employee people=new Employee();
        people.setName("王麗麗");
        people.setAge(35);
        people.setPhone("13653835964");
        people.setAddress("河北省石家莊市");
        System.out.println("姓名:"+people. getName());
        System.out.println("年齡:"+people.getAge());
        System.out.println("電話:"+people.getPhone());
        System.out.println("家庭住址:"+people.getAddress());
    }
}

運行該示例,輸出結果如下:
姓名:王麗麗
年齡:35
電話:13653835964
家庭住址:河北省石家莊市

通過封裝,實現了對屬性的數據訪問限制,滿足了年齡的條件。在屬性的賦值方法中可以對屬性進行限制操作,從而給類中的屬性賦予合理的值, 并通過取值方法獲取類中屬性的值(也可以直接調用類中的屬性名稱來獲取屬性值)。

精美而實用的網站,提供C語言、C++、STL、Linux、Shell、Java、Go語言等教程,以及socket、GCC、vi、Swing、設計模式、JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo
极速pk10开户