什么是封裝,封裝如何使用


1.封裝的概念 

  (1)將東西包裝在一起,然后以新的完整的形式呈現出來(即將屬性和方法封裝到類里面,通過添加訪問修飾符來限制訪問權限,以達到信息隱藏的目的)    (2)信息隱藏:隱藏對象的實現細節,不讓外部直接訪問到
    (3)將數據和方法包裝進類中,加上具體實現的隱藏,共同被稱作封裝,其結果是一個同時帶有特征和行為的數據類型。(定義類,定義其屬性、方法的過程稱為封裝類)
    (4)信息隱藏是OOP最重要的功能之一,也是使用訪問修飾符的原因。
    (5)信息隱藏的原因包括:
        ①對模塊的任何實現細節所做的更改不會影響使用該模塊的代碼
        ②防止用戶意外修改數據
        ③使模塊易於使用和維護
    (6)訪問修飾符:
        ①public(公開的):該類或非該類均可訪問,權限最大
        ②private(私有的):只有該類可以訪問,權限最小
        ③protected(受保護的):該類及其子類的成員可以訪問,同一個包中的類也可以訪問
        ④默認:同一個包中的類可以訪問
    (7)屬性封裝的實現
        ①修改屬性的可見性來限制對屬性的訪問
        ②為每個屬性創建一對賦值(setter)方法和取值(getter)方法,用於公開對這些屬性的訪問接口
        ③在setter和getter方法中,根據需要加入對屬性操作的限制

public class Demo {
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 < 22) {
System.out.println("錯誤!最小年齡應為22歲!");
this.age = 22;
} else {
this.age = age;
}
}
}
     注意:除非必須公開底層實現細節,否則應該將所有屬性指定為private加以封裝,讓外界不能直接訪問修改,只能對外界提供set/get方法。使用屬性封裝,通過增加數據訪問限制,增強了類的可維護性。
    (8)封裝方法的目的:
        ① 隱藏方法實現細節(方法體),向外部提供公開接口(方法頭),以供安全使用
        ② 簡化調用,方便修改維護
        ③ 根據需要,可以私有化方法以供類內部使用
類的修飾符:
    1.前綴修飾符(public,abstract,final)
    2.后綴修飾符(extends,implements)


2.構造方法
    (1)類的構造方法的概念和作用
        構造方法負責對象初始化工作,為對象的屬性賦合適的初始值。創建對象時,其類的構造方法確保在用戶操作對象之前,系統保證初始化的進行。(即對屬性進行初始化)
    (2)構造方法的語法規則
        ① 構造方法名與類名相同
        ② 沒有返回類型
        ③ 方法實現主要為字段賦初始值
    (3)構造方法的調用
             構造方法的調用很特別:通過new操作符(返回新建實例的引用),即創建對象的同時調用構造方法來對屬性進行初始化。也就是在我們創建對象的時候自動調用的。注意:當我們在構造一個對象的時候,一定會調用構造方法,所以java系統保證每一個類都有構造方法。當一個類沒有顯示聲明構造方法的時候,系統會有一個默認的無參構造方法。

 

3.this關鍵字
(1)this關鍵字的特點:
       ① 在類的方法中使用this關鍵字代表的是調用此方法的對象的引用(可以認為this和引用變量是同一個人,存的是同樣的地址)
       ② this可以看做是一個變量,它的值是當前對象的引用
       ③ 使用this關鍵字可以處理方法中的成員變量和形參同名的問題
       ④ 當在方法內需要用到調用該方法的對象時,就可以用this
       ⑤ 在類的構造方法中可以調用this([參數列表])來調用該類的指定構造方法

public class Teacher {
private String name = "";
private int age;
private String city = "";

public Teacher() {
System.out.println("這是一個無參的構造方法");
}

public Teacher(String name, int age, String city) {
// 當一個構造方法去調用另一個構造方法的時候,對this的調用必須是該構造器中的第一條語句,因為要確保初始化的操作先被執行
// 構造方法中的this指的是正在被創建的對象
this();
this.name = name;
this.age = age;
this.city = city;
}

// 同一個類中的方法去調用同一個類中的其它方法的時候,this可加可不加,不加時,程序在編譯的時候會自動加上。
public String toString() {
// 這里的this可以省略不寫
return "名字:" + this.name + ",年齡:" + this.age + ",城市:" + this.city;
}
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM