首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java 物件導向核心:類別與物件的完整實戰指南

     編輯:Java 程式設計入門

Java 物件導向核心:類別與物件的完整實戰指南

Java 作為純物件導向語言,支援封裝、繼承、多型、抽象等核心特性。本文深入解析類別與物件的關係、結構組成、建構方法、實例化流程與原始碼檔案規範,並附完整程式碼範例。

核心概念釐清

  • 物件:類別的實例,擁有狀態(屬性)與行為(方法)。例:一隻狗的顏色、名字、品種是狀態;搖尾巴、叫、吃是行為
  • 類別:建立物件的藍圖/模板,定義一類物件共同的屬性與方法

現實世界中,「男孩/女孩」是類別,具體的每個人則是該類別的物件實例。

Java 類別結構剖析

public class Dog {
    // 成員變數(屬性)
    String breed;
    int age;
    String color;
    
    // 方法(行為)
    void barking() { }
    void hungry() { }
    void sleeping() { }
}

三種變數類型比較

類型宣告位置生命週期存取範圍
區域變數方法/建構子/程式區塊內方法結束即銷毀僅限該方法內部
成員變數(實例變數)類別中、方法外物件建立時實例化,物件銷毀時消失類別所有方法、建構子、特定區塊
類別變數(靜態變數)類別中、方法外,加 static 修飾類別載入時建立,程式結束釋放全類別共享,可透過類別名直接存取

建構方法深度解析

  • 每個類別至少有一個建構方法,未顯式定義時編譯器提供無參數預設建構子
  • 建構方法名稱必須與類別同名,無回傳類型(連 void 都不能寫)
  • 可多載:同一類別可定義多個參數列表不同的建構方法
public class Puppy {
    // 無參數建構子
    public Puppy() { }
    
    // 含參數建構子
    public Puppy(String name) {
        System.out.println("小狗的名字是:" + name);
    }
}

物件建立三部曲

  1. 宣告:Puppy myPuppy; — 宣告參考變數類型與名稱
  2. 實例化:new Puppy("tommy") — 在堆疊配置記憶體
  3. 初始化:呼叫建構方法完成屬性初始設定

完整寫法:Puppy myPuppy = new Puppy("tommy");

存取實例成員語法


// 實例化物件
ObjectReference = new Constructor();

// 存取屬性
ObjectReference.variableName;

// 呼叫方法
ObjectReference.MethodName();

完整實戰範例:Puppy 類別應用

public class Puppy {
    int puppyAge;  // 實例變數
    
    public Puppy(String name) {
        System.out.println("小狗的名字是:" + name);
    }
    
    // 設定年齡
    public void setAge(int age) {
        puppyAge = age;
    }
    
    // 取得年齡
    public int getAge() {
        System.out.println("小狗的年齡為:" + puppyAge);
        return puppyAge;
    }
    
    public static void main(String[] args) {
        // 建立物件
        Puppy myPuppy = new Puppy("tommy");
        
        // 透過方法設定/取得屬性
        myPuppy.setAge(2);
        myPuppy.getAge();
        
        // 直接存取 public 實例變數
        System.out.println("變數值:" + myPuppy.puppyAge);
    }
}

輸出結果:

小狗的名字是:tommy
小狗的年齡為:2
變數值:2

原始碼檔案聲明規範(必考重點)

  • 單一檔案僅能有一個 public 類別,但可包含多個非 public 類別
  • 檔案名稱必須與 public 類別類名完全一致(含大小寫),副檔名 .java
  • 若類別屬於套件,package 陳述句必須在檔案第一行
  • import 陳述句置於 package 與類別定義之間;無 package 時置於檔案最前端
  • import 與 package 對檔案內所有類別生效,不可為同一檔案不同類別指定不同套件

套件與 Import 機制

套件用於組織管理大量類別。import java.io.*; 讓編譯器載入該套件下所有類別,提供合理路徑定位原始碼或編譯後的 class 檔。

綜合實戰:Employee 與 EmployeeTest 雙檔案協作

Employee.java — 定義員工實體類別

import java.io.*;

public class Employee {
    String name;
    int age;
    String designation;
    double salary;
    
    // 建構子
    public Employee(String name) {
        this.name = name;
    }
    
    // 存取器方法
    public void empAge(int empAge) { age = empAge; }
    public void empDesignation(String empDesig) { designation = empDesig; }
    public void empSalary(double empSalary) { salary = empSalary; }
    
    // 列印資訊
    public void printEmployee() {
        System.out.println("名字:" + name);
        System.out.println("年齡:" + age);
        System.out.println("職位:" + designation);
        System.out.println("薪水:" + salary);
    }
}

EmployeeTest.java — 主程式建立物件並測試

import java.io.*;

public class EmployeeTest {
    public static void main(String[] args) {
        // 建立兩個員工物件
        Employee empOne = new Employee("RUNOOB1");
        Employee empTwo = new Employee("RUNOOB2");
        
        // 設定屬性
        empOne.empAge(26);
        empOne.empDesignation("高級程式設計師");
        empOne.empSalary(1000);
        
        empTwo.empAge(21);
        empTwo.empDesignation("菜鳥程式設計師");
        empTwo.empSalary(500);
        
        // 列印結果
        empOne.printEmployee();
        empTwo.printEmployee();
    }
}

編譯執行後輸出兩位員工完整資訊,展示物件獨立擁有各自狀態的特性。

特殊類別預覽

除了一般類別,Java 還提供內部類別、匿名類別、抽象類別、final 類別等進階型態,將在存取控制與進階特性章節詳細介紹。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved