首頁 > Java > java教程 > 主體

Java封裝的概念是什麼

WBOY
發布: 2023-05-09 08:52:22
轉載
1733 人瀏覽過

封裝

封裝的概念

將類別的某些資訊隱藏在類別的內部,不允許外部程式直接訪問,而是透過該類別提供的方法來對隱藏的資訊進行操作和存取。

為什麼需要封裝?

當我們建立一個類別的物件後,我們可以透過「物件.屬性」的方式,對物件的屬性進行賦值。這裡賦值操作要受到 屬性的資料型別和儲存範圍的限制。除此之外,沒有其他制約條件,但是,在實際問題中,我們往往需要為屬性賦值加入額外的限制條件。這個條件就不能在屬性宣告時體現,我們只能透過方法進行限制性條件的加入。同時我們需要避免使用者再使用「物件.屬性」的方式對屬性進行賦值,則需要將屬性宣告為私有的(private)。

封裝的優點:

1. 良好的封裝能夠減少耦合。

2. 類別內部的結構可以自由修改。

3. 可以對成員變數進行更精確的控制。

4. 隱藏訊息,實作細節。

封裝的實作步驟

(1)將屬性修改為private

(2)建立getter/setter方法,透過這兩種方法對資料進行取得與設定,物件透過呼叫這兩種發方法來實現對資料的讀寫。

class person{
  private int age;//修改属性为private
public int getAge(){
  return age;
}
public void setAge(int a){
   age = a;
   }
 }
登入後複製

封裝 隱藏物件內部的複雜性,只對外公開簡單的介面便於外部調用,封裝性的體現,需要權限修飾符來配合。

Java中的套件

Java中的套件是為了更好的實作專案中類別的管理,解決同名檔案的衝突,提到java中的套件那麼我們就不得不提到package關鍵字,我們一般使用package聲明類別或介面所屬的包,聲明在源文件的首行,例如package java.lang,每. 一次就代表一層文件目錄,同一個包下不能命名同名的接口,類,不同的包可以,對於包的使用則需要使用import關鍵字,在源文件中顯示的使用import結構導入指定包下的類,接口,通常import聲明在包的聲明和類的聲明之間,java中,套件的名字規格是全小寫的字母拼字

java中類別的成員-建構器

任何一個類別都有建構器,用來建立物件和初始化物件的屬性,建立類別的物件的方法:new 建構器,如Person p = new Person();如果沒有明確的定義類別的建構器的話,則系統預設提供一個空參的建構器

定義建構器的格式

權限修飾符類別名稱(形參列表){}

總結:屬性賦值的先後順序:

1預設初始化

2明確初始化

3建構器中初始化

4透過「物件.方法」或「物件.屬性」的方法,賦值

java中的this關鍵字

this關鍵字可以用來修飾:屬性,方法建構器,this理解為:目前物件或目前正在建立的物件

在類別的方法中,我們可以使用「this.屬性」或「this.方法」的方式,呼叫目前物件屬性或方法。但是通常情況下,我們都選擇省略“this.”。特殊情況下,如果方法的形參和類別的屬性同名時,我們必須顯示的使用「this.變數」的方式,表面此變數為屬性。

在類別的建構子也是一樣,呼叫一個空參的建構子:this();呼叫有參數的例如public Person (int age) 就可以用this(age)來進行調用,但是建構器中不能自己調用自己只能調用其他的構造器,如果有n個構造器,那麼只有n-1個構造器可以使用this這樣的方式來調用,並且構造器this調用必須聲明在構造器的首行,this也可以用來進行物件之間的比較大小。

public class Boy {
    private int age;
    public int getAge() {
        return age;
    }
    public void setAge(int a) {
        age = a;
    }
    public void compare(Boy boy) {
        if (this.age > boy.age) {
            System.out.println("YES");
        } else if (this.age < boy.age) {
            System.out.println("No");
        }
    }
}
登入後複製

以上是Java封裝的概念是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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