首頁(yè)技術(shù)文章正文

如何實(shí)現(xiàn)類(lèi)的封裝?

更新時(shí)間:2022-03-30 來(lái)源:黑馬程序員 瀏覽量:

類(lèi)的封裝是指將對(duì)象的狀態(tài)信息隱藏在對(duì)象內(nèi)部,不允許外部程序直接訪問(wèn)對(duì)象的內(nèi)部信息,而是通過(guò)該類(lèi)提供的方法實(shí)現(xiàn)對(duì)內(nèi)部信息的操作訪問(wèn)。

在Java開(kāi)發(fā)中,在定義一個(gè)類(lèi)時(shí),將類(lèi)中的屬性私有化,即使用private關(guān)鍵字修飾類(lèi)的屬性,被私有化的屬性只能在類(lèi)中被訪問(wèn)。如果外界想要訪問(wèn)私有屬性,則必須通過(guò)setter和getter方法設(shè)置和獲取屬性值。

接下來(lái)修改文件3-3,使用private關(guān)鍵字修改name屬性和age屬性,實(shí)現(xiàn)類(lèi)的封裝,如文件3-4所示。

classStudent {
    private String name; // 聲明姓名屬性
    private int age; // 聲明年齡屬性
    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) {
            System.out.println("您輸入的年齡有誤!");
        } else {
            this.age = age;
        }
    }
    public void read() {
        System.out.println("大家好,我是" + name + ",年齡" + age);
    }
}
public class Example04 {
    public static void main(String[] args) {
        Student stu = new Student();     // 創(chuàng)建學(xué)生對(duì)象
        stu.setName("張三");             // 為對(duì)象的name屬性賦值
        stu.setAge(-18);                 // 為對(duì)象的age屬性賦值
        stu.read();                      // 調(diào)用對(duì)象的方法
    }
 }

在文件3-4中,使用private關(guān)鍵字將屬性name和age聲明為私有變量,并對(duì)外界提供公有的訪問(wèn)方法,其中,getName()方法和getAge()方法用于獲取name屬性和age屬性的值,setName()方法和setAge()方法方法用于設(shè)置name屬性和age屬性的值。

文件3-4的運(yùn)行結(jié)果如圖3-9所示。

1648633544334_41.png

圖3-9文件3-4的運(yùn)行結(jié)果由圖3-9可知,當(dāng)調(diào)用setAge()方法傳入了一個(gè)負(fù)數(shù)-18時(shí),age顯示為初始值0。這是因?yàn)閟etAge()方法對(duì)參數(shù)age進(jìn)行了判斷,如果age的值小于或等于0,會(huì)打印“您輸入的年齡有誤!”,并將age設(shè)置為0。





猜你喜歡:

Collections類(lèi)中如何進(jìn)行添加和排序操作?

Java中常見(jiàn)的異常類(lèi)型有哪些?

ServletFileUpload類(lèi)方法有哪些?

什么是微服務(wù)?微服務(wù)和分布式的區(qū)別有哪些?

黑馬程序員Java開(kāi)發(fā)培訓(xùn)

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!