Java Objects 學習筆記

Java對象是由其狀態和行為定義的。狀態表示對象的屬性,而行為表示對象的能力。這種封裝性使得Java程序員更容易開發和維護大型應用程序,其使用面向對象的開發方法代替了傳統的面向過程的方法。

一、對象的創建和使用

對象的創建過程非常簡單,只需要使用關鍵字「new」即可創建對象。使用對象也十分直觀,只需要使用對象名加上成員訪問操作符(dot)即可訪問其屬性和方法。

public class Car {
    private String brand;  // 品牌
    private String color;  // 顏色
    private int speed;     // 速度
    
    // 構造函數
    public Car(String brand, String color) {
        this.brand = brand;
        this.color = color;
        this.speed = 0;
    }
    
    // 獲取品牌
    public String getBrand() {
        return brand;
    }
    
    // 獲取顏色
    public String getColor() {
        return color;
    }
    
    // 獲取速度
    public int getSpeed() {
        return speed;
    }
    
    // 加速
    public void speedUp(int speed) {
        this.speed += speed;
    }
    
    // 減速
    public void slowDown(int speed) {
        this.speed -= speed;
    }
}

public class Main {
    public static void main(String[] args) {
        Car car1 = new Car("Toyota", "Red");
        Car car2 = new Car("Honda", "Blue");
        
        car1.speedUp(10);
        System.out.println(car1.getBrand() + " " + car1.getColor() + " " + car1.getSpeed());
        
        car2.speedUp(20);
        System.out.println(car2.getBrand() + " " + car2.getColor() + " " + car2.getSpeed());
    }
}

上述代碼中,我們定義了一個Car類,其中包含了品牌、顏色和速度三個屬性,以及加速和減速方法。我們使用這個類創建了兩個不同的對象car1和car2,並分別使用speedUp方法將其速度增加10和20。

二、繼承

繼承是面向對象編程中的一種重要機制,允許創建一個類別,從已有類別繼承屬性和方法,並且在此基礎上添加新的屬性和方法。繼承可以大幅減少代碼量,同時也方便了程序員進行代碼復用和修改。

// 父類Person
public class Person {
    protected String name;
    protected int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public void sayHello() {
        System.out.println("Hello, my name is " + name + ", I'm " + age + " years old.");
    }
}

// 子類Student
public class Student extends Person {
    protected String school;
    
    public Student(String name, int age, String school) {
        super(name, age);
        this.school = school;
    }
    
    public void study() {
        System.out.println("I'm studying at " + school + ".");
    }
}

public class Main {
    public static void main(String[] args) {
        Student student = new Student("Alice", 18, "Beijing University");
        student.sayHello();
        student.study();
    }
}

上述代碼中,我們定義了一個Person類和一個Student類。Student類繼承自Person類,繼承了其屬性和方法,並且在此基礎上添加了一個school屬性和一個study方法。

三、封裝

封裝是面向對象編程中的一個重要機制,原則是將類的實現細節隱藏在內部,只暴露必要的接口供外部使用。封裝可以提高安全性、降低耦合和提高復用率。

public class Account {
    private String name;
    private double balance;
    
    public void deposit(double amount) {
        balance += amount;
    }
    
    public void withdraw(double amount) {
        if (balance >= amount) {
            balance -= amount;
        } else {
            System.out.println("Insufficient balance!");
        }
    }
    
    public double getBalance() {
        return balance;
    }
}

public class Main {
    public static void main(String[] args) {
        Account account = new Account();
        account.deposit(1000);
        account.withdraw(500);
        System.out.println(account.getBalance());
    }
}

上述代碼中,我們定義了一個Account類,其中包含了一個私有的balance屬性和三個公有的方法deposit、withdraw和getBalance。我們使用deposit和withdraw方法來修改balance屬性,而getBalance方法則用來獲取balance屬性。由於balance屬性被定義成私有的,外部的程序無法直接訪問balance屬性,只能通過公有的方法來操作和獲取其值。

原創文章,作者:GBOE,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/146175.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
GBOE的頭像GBOE
上一篇 2024-10-29 18:56
下一篇 2024-10-29 18:56

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發佈。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Python學習筆記:去除字符串最後一個字符的方法

    本文將從多個方面詳細闡述如何通過Python去除字符串最後一個字符,包括使用切片、pop()、刪除、替換等方法來實現。 一、字符串切片 在Python中,可以通過字符串切片的方式來…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29

發表回復

登錄後才能評論