2025年2月23日 星期日

各種程式語言的類別(Classes)比較

📌 各種程式語言的類別(Classes)比較:VBA、Python、Java、C++

不同程式語言對於 類別(Class) 的支援程度有所不同。以下是 VBA、Python、Java、C++ 在類別的應用上有哪些 相似點與不同點


🔹 什麼語言支援類別(Class)?

語言 是否支援類別(Class) 是否完全物件導向(OOP)
Python ✅ 支援 🟢 完全物件導向
Java ✅ 支援 🟢 完全物件導向
C++ ✅ 支援 🟡 既支援 OOP,也支援程序式
VBA 🟡 部分支援 🔴 主要是程序式,但可以模擬 OOP
JavaScript ✅ 支援(ES6+) 🟢 支援物件導向,但也可當作函式式語言
C(ANSI C) ❌ 不支援 🔴 純程序式語言

完全物件導向(OOP)語言 → Python、Java
🟡 可用 OOP,但不是強制 OOP → C++、JavaScript、VBA
🔴 沒有內建類別機制 → C(但可以用 struct 和函數模擬)


🔹 各語言的類別語法比較

以下是 VBA、Python、Java、C++ 的類別語法比較,以「汽車(Car)」類別為例。


🔹 Python:動態語言,支援 OOP

Python 是 完全物件導向 的語言,所有東西(甚至整數、函數)都是物件。

class Car:
    def __init__(self, brand, color):
        self.brand = brand  # 屬性
        self.color = color  # 屬性

    def drive(self):
        print(f"{self.color} 的 {self.brand} 正在行駛!")

# 創建物件
car1 = Car("Toyota", "紅色")
car1.drive()  # 輸出:紅色 的 Toyota 正在行駛!

Python 特點:

  • 動態型別(變數類型可變)
  • 支援多重繼承
  • 物件可直接修改屬性
  • 簡潔易讀,沒有強制變數類型宣告

🔹 Java:強型別、純物件導向

Java 是 純物件導向 的語言,所有東西都必須定義在類別內。

class Car {
    private String brand;
    private String color;

    // 建構子
    public Car(String brand, String color) {
        this.brand = brand;
        this.color = color;
    }

    // 方法
    public void drive() {
        System.out.println(color + " 的 " + brand + " 正在行駛!");
    }

    public static void main(String[] args) {
        Car car1 = new Car("Toyota", "紅色");
        car1.drive(); // 輸出:紅色 的 Toyota 正在行駛!
    }
}

Java 特點:

  • 強型別(變數類型固定)
  • 必須顯式定義類別與方法
  • 所有物件屬性預設是 private(封裝性強)
  • 不支援多重繼承(但可以用 interface 模擬)

🔹 C++:支援 OOP,但不強制

C++ 既可以用 OOP,也可以用傳統程序式方式開發

#include <iostream>
using namespace std;

class Car {
private:
    string brand;
    string color;

public:
    // 建構子
    Car(string b, string c) {
        brand = b;
        color = c;
    }

    void drive() {
        cout << color << " 的 " << brand << " 正在行駛!" << endl;
    }
};

int main() {
    Car car1("Toyota", "紅色");
    car1.drive(); // 輸出:紅色 的 Toyota 正在行駛!
    return 0;
}

C++ 特點:

  • 強型別(類似 Java)
  • 可使用 OOP,也可使用程序式開發
  • 支援多重繼承
  • 手動管理記憶體(new/delete)

🔹 VBA:基本上是程序式,但可以模擬類別

VBA 不是天生的 OOP 語言,但可以用 Class Module 來建立類別。

🔹 VBA 定義類別的方法

  1. VBA 編輯器 中,點選「插入(Insert)」→「類別模組(Class Module)
  2. 重新命名類別(例如:Car
  3. 輸入以下程式碼:
' VBA 類別(Car.cls)
Private pBrand As String
Private pColor As String

' 設定品牌
Public Property Let Brand(value As String)
    pBrand = value
End Property
Public Property Get Brand() As String
    Brand = pBrand
End Property

' 設定顏色
Public Property Let Color(value As String)
    pColor = value
End Property
Public Property Get Color() As String
    Color = pColor
End Property

' 方法:開車
Public Sub Drive()
    MsgBox pColor & " 的 " & pBrand & " 正在行駛!"
End Sub

🔹 VBA 使用類別的方法(標準模組)

Sub TestCar()
    Dim myCar As New Car
    myCar.Brand = "Toyota"
    myCar.Color = "紅色"
    myCar.Drive ' 彈出訊息框:紅色 的 Toyota 正在行駛!
End Sub

VBA 特點:

  • 主要是程序式語言
  • 支援類別(透過 Class Module)
  • 沒有真正的建構子(Constructor)
  • 不支援繼承
  • 主要應用在 Office 自動化(Excel、Word、Access)

🔹 Python、VBA、Java、C++ 類別的相似與不同

語言 支援 OOP? 動態/靜態型別 支援繼承? 支援多重繼承? 主要應用領域
Python ✅ 是 動態型別 ✅ 是 ✅ 是 AI、Web、數據分析
Java ✅ 是 靜態型別 ✅ 是 ❌ 否 企業系統、App
C++ ✅ 是 靜態型別 ✅ 是 ✅ 是 遊戲、系統開發
VBA 🟡 部分支援 動態型別 ❌ 否 ❌ 否 Office 自動化

🔹 總結

✅ Python、Java、C++ 都是 OOP 語言,但 Python 更靈活,Java 更嚴格,C++ 可 OOP 也可程序式。
✅ VBA 不是完全的 OOP,但可以模擬類別,適用於 Office 自動化
學 OOP 的最佳語言Python(簡單易學),Java(規範嚴謹),C++(高效能),VBA(Office 應用)

如果你想更深入學習某種語言的類別用法,歡迎問我! 🚀😊 

沒有留言:

張貼留言

精選文章

手機使用VPN進入NAS、DaikinAPP時,仍能使用其他APP如銀行,連上WIFI 或行動網路

為了避免手機使用VPN進入NAS、DaikinAPP時,仍能使用其他APP如銀行,連上WIFI 或行動網路,要修改Router Policy設定?需要把家中屬於VPN的網段設備與其他區隔?要如何設定? 為了達成您的需求: ✅ 手機連上 VPN(例如連回家中 TP-Link ER...