」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 掌握 Java:類別、方法、繼承和封裝

掌握 Java:類別、方法、繼承和封裝

發佈於2024-07-31
瀏覽:357

Mastering Java: Classes, Methods, Inheritance, and Encapsulation

Java 是一種多功能且功能強大的程式語言,廣泛用於建立強大的應用程式。在本文中,我們將深入研究 Java 的一些基本概念:類別、方法、繼承和封裝。這些概念構成了 Java 中物件導向程式設計 (OOP) 的支柱,對於編寫高效且可維護的程式碼至關重要。

Java 中的類別
在Java中,類別是創建物件的藍圖。它透過將資料和處理資料的方法捆綁到一個單元中來定義一種資料類型。以下是 Java 中類別的基本範例:

public class Animal {
    // Fields
    private String name;
    private int age;

    // Constructor
    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // Method
    public void displayInfo() {
        System.out.println("Name: "   name   ", Age: "   age);
    }
}

在此範例中:

Animal 是一個有兩個欄位的類別:名字和年齡。
建構子 Animal(String name, int age) 初始化這些欄位。
displayInfo 方法列印動物的名稱和年齡。
Java 中的方法
方法是在類別內部定義的函數,用於描述從該類別創建的物件的行為。方法可以接受參數、執行操作並傳回值。

以下是為 Animal 類別添加更多方法的方法:

public class Animal {
    private String name;
    private int age;

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void displayInfo() {
        System.out.println("Name: "   name   ", Age: "   age);
    }

    // New method to change the age
    public void setAge(int newAge) {
        age = newAge;
    }

    // New method to retrieve the age
    public int getAge() {
        return age;
    }
}

在這個修改後的類別中:

setAge 方法允許更改動物的年齡。
getAge 方法傳回動物的當前年齡。
Java中的繼承
繼承是一種新類別從現有類別繼承屬性和行為(欄位和方法)的機制。繼承的類別稱為子類別(或衍生類別),它繼承的類別稱為超類別(或基底類別)。

以下是繼承的例子:

// Superclass
public class Animal {
    private String name;
    private int age;

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void displayInfo() {
        System.out.println("Name: "   name   ", Age: "   age);
    }
}

// Subclass
public class Dog extends Animal {
    private String breed;

    public Dog(String name, int age, String breed) {
        super(name, age);
        this.breed = breed;
    }

    public void displayBreed() {
        System.out.println("Breed: "   breed);
    }
}

在此範例中:

Animal 是具有 name 和age 欄位以及方法 displayInfo 的超類別。
Dog 是擴展 Animal 的子類,並添加了新的字段品種和方法 displayBreed。
Dog 建構子中的 super(name,age) 呼叫呼叫超類別 Animal 的建構子。
Java中的封裝
封裝是將資料包裝在單一單元下。它是將程式碼及其操作的資料綁定在一起的機制。實現封裝的一種方法是將類別的欄位設為私有,並提供公共 getter 和 setter 方法來修改和查看欄位的值。

以下是我們如何封裝 Animal 類別:

public class Animal {
    // Private fields
    private String name;
    private int age;

    // Constructor
    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // Getter method for name
    public String getName() {
        return name;
    }

    // Setter method for name
    public void setName(String name) {
        this.name = name;
    }

    // Getter method for age
    public int getAge() {
        return age;
    }

    // Setter method for age
    public void setAge(int age) {
        this.age = age;
    }

    // Method to display information
    public void displayInfo() {
        System.out.println("Name: "   name   ", Age: "   age);
    }
}

這個封裝類別中:

欄位名稱和年齡是私有的。
提供了公共 getter 和 setter 方法來存取和修改這些欄位。
這確保了不能從類別外部直接存取字段,從而保護了物件資料的完整性。

理解類別、方法、繼承和封裝對於掌握 Java 和物件導向程式設計至關重要。透過使用這些概念,您可以建立模組化、可重複使用且可維護的程式碼。試驗這些範例,建立您自己的類別和方法,並利用繼承和封裝來設計健壯的應用程式。快樂編碼!

版本聲明 本文轉載於:https://dev.to/shahtanya/mastering-java-classes-methods-inheritance-and-encapsulation-44c0?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 為什麼使用固定定位時,為什麼具有100%網格板柱的網格超越身體?
    為什麼使用固定定位時,為什麼具有100%網格板柱的網格超越身體?
    網格超過身體,用100%grid-template-columns 問題:考慮以下CSS和HTML: position:fixed ; grid-template-columns:40%60%; grid-gap:5px; 背景: #eee; 當位置未固定時,網格將正確顯示。但是...
    程式設計 發佈於2025-02-06
  • 如何在JavaScript對像中動態設置鍵?
    如何在JavaScript對像中動態設置鍵?
    如何為JavaScript對像變量創建動態鍵,嘗試為JavaScript對象創建動態鍵,使用此Syntax jsObj['key' i] = 'example' 1;將不起作用。正確的方法採用方括號:他們維持一個長度屬性,該屬性反映了數字屬性(索引)和一個數字屬性的數量。標準對像沒有模仿這...
    程式設計 發佈於2025-02-06
  • 如何從MySQL中的文本文件執行SQL腳本?
    如何從MySQL中的文本文件執行SQL腳本?
    。 && && && && && home \ home \ sivakumar \ desktop \ test.sql錯誤:無法打開文件'\ home \ sivakumar \ desktop \ test.sql',錯誤:2 : [&& && && &&華術詳細說明:[&...
    程式設計 發佈於2025-02-06
  • 如何克服PHP的功能重新定義限制?
    如何克服PHP的功能重新定義限制?
    克服PHP的函數重新定義限制在PHP中,多次定義一個相同名稱的函數是一個no-no。嘗試這樣做,如提供的代碼段所示,將導致可怕的“不能重新列出”錯誤。 // error:“ coss redeclare foo()” 但是,php工具腰帶中有一個隱藏的寶石:runkit擴展。它使您能夠靈活...
    程式設計 發佈於2025-02-06
  • 如何使用替換指令在GO MOD中解析模塊路徑差異?
    如何使用替換指令在GO MOD中解析模塊路徑差異?
    克服go mod中的模塊路徑差異 coreos/bbolt:github.com/coreos/ [email受保護]:解析go.mod:模塊將其路徑聲明為:go.etcd.io/bbolt `要解決此問題,您可以在go.mod文件中使用替換指令。只需在go.mod的末尾添加以下行:[&& &...
    程式設計 發佈於2025-02-06
  • 如何實施團結延誤進行遊戲和事件測序?
    如何實施團結延誤進行遊戲和事件測序?
    Unity延遲實現詳解 在Unity中創建延遲對於管理遊戲流程、排序事件和模擬真實世界行為至關重要。以下是實現延遲的幾種方法: 1. WaitForSeconds/WaitForSecondsRealtime StartCoroutine: 聲明一個協程函數。 WaitForSeconds: ...
    程式設計 發佈於2025-02-06
  • 如何在matplotlib中使用偏移值自定義軸值格式化?
    如何在matplotlib中使用偏移值自定義軸值格式化?
    [2 matplotlib圖,其中數據值以納秒秒錶示(1E-9)。如果Y軸顯示“ 4.4具有1E-8偏移”之類的值,那麼如何強迫軸顯示“ 44具有1E-9偏移”?同樣,如果X軸顯示“ 5.54478e4”之類的值,則如何顯示為“ 55447”(無小數)的全號)? ]要實現所需的格式,請使用以下步驟:...
    程式設計 發佈於2025-02-06
  • 如何在Windows Server 2008上還原MySQL轉儲文件?
    如何在Windows Server 2008上還原MySQL轉儲文件?
    [2 MySQL在Windows Server上的MySQL轉儲文件還原:實用指南 數據庫備份對於數據保存和恢復至關重要。 mysqldump 是創建這些備份,生成SQL轉儲文件的常見工具。 但是,使用MySQL管理員GUI直接恢復這些文件通常會失敗。 理解問題 不兼容性源於 mysqldu...
    程式設計 發佈於2025-02-06
  • 如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    從python 導入編解碼器 導入 text = codecs.decode('這狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#帶有表情符號 emoji_pattern = re.compile(“ [”...
    程式設計 發佈於2025-02-06
  • 版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    在默認值中使用current_timestamp或mysql版本中的current_timestamp或在5.6.5 這種限制源於遺產實現的關注,這些限制需要為Current_timestamp功能提供特定的實現。消息和相關問題 `Productid` int(10)unsigned not ...
    程式設計 發佈於2025-02-06
  • 如何在刪除標籤時將特定的HTML標籤保留在PHP中?
    如何在刪除標籤時將特定的HTML標籤保留在PHP中?
    在php 使用strip_tags function php's php的php的php的php php的php php的php php php提供了一種簡單而有效的方法來從字符串中剝離HTML和PHP標籤。它充當文本處理工具,默認情況下可以刪除所有標籤或基於提供的條件選擇性刪除標籤。...
    程式設計 發佈於2025-02-06
  • 服務器為什麼無法訪問URL哈希(#moreurl)?
    服務器為什麼無法訪問URL哈希(#moreurl)?
    在服務器端的url哈希缺失:理解為什麼在瀏覽網絡時通常會遇到URL的哈希部分。它表示遵循“#”符號的URL的一部分。該組件有助於網頁中的導航,使用戶可以跳到特定部分而不重新加載整個頁面。但是,在服務器端訪問此URL片段時會出現一個特殊的觀察。 為什麼在服務器上#moreUrl不可訪問? #UR...
    程式設計 發佈於2025-02-06
  • 如何使用PHP從XML文件中有效地檢索屬性值?
    如何使用PHP從XML文件中有效地檢索屬性值?
    從php 您的目標可能是檢索“ varnum”屬性值,其中提取數據的傳統方法可能會使您感到困惑。 - > attributes()為$ attributeName => $ attributeValue){ echo $ attributeName,'=“',$ a...
    程式設計 發佈於2025-02-06
  • 如何使用PDO參數綁定十進制數據類型?
    如何使用PDO參數綁定十進制數據類型?
    在處理特定數據類型的數據庫字段(例如小數或浮點)時,必須使用適當的PDO參數來確保適當的數據綁定。 十進製字段綁定問題當您遇到的時,使用PDO更新小數字段可能是有問題的。您嘗試過的三種方法:都不正確,因為它們沒有為小數為小數字段指定正確的pdo參數。 沒有專門為小數或浮點數據類型設計的專用PDO ...
    程式設計 發佈於2025-02-06
  • PHP陣列鍵值異常:了解07和08的好奇情況
    PHP陣列鍵值異常:了解07和08的好奇情況
    PHP數組鍵值問題,使用07&08 在給定數月的數組中,鍵值07和08呈現令人困惑的行為時,就會出現一個不尋常的問題。運行print_r($月份)返回意外結果:鍵“ 07”丟失,而鍵“ 08”分配給了9月的值。 此問題源於PHP對領先零的解釋。當一個數字帶有0(例如07或08)的前綴時,PHP...
    程式設計 發佈於2025-02-06

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3