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

C# 面向對象程式設計核心概念:類別、物件、欄位、屬性與建構函式

     編輯:關於C語言

從面向過程到面向對象的範式轉換

早期程式設計多採面向過程(OPP)思維:程式從入口點開始徑直執行至結束,程式碼重用率低、維護困難。面向對象(OOP)將現實世界建模為一系列物件,每個物件封裝屬性(狀態)與方法(行為),透過類別作為藍圖實例化物件,實現程式碼的模組化、可擴展與易維護。

一、類別與物件:OOP 的基石

1. 類別定義語法

類別由欄位、屬性、方法、建構函式等成員組成:

class Person
{
    // 欄位:直接儲存資料,通常設為 private 並透過屬性暴露
    public string Name;
    public string Gender;
    public int Age;
    public double Weight;

    // 無參數建構函式:預設初始化
    public Person()
    {
        Name = "LFC";
        Gender = "man";
        Age = 1;
        Weight = 10;
    }

    // 多載建構函式:接受外部參數初始化
    public Person(string name, string gender, int age, double weight)
    {
        this.Name = name;
        this.Gender = gender;
        this.Age = age;
        this.Weight = weight;
    }

    // 方法:封裝行為邏輯
    public void Eat(double quantity)
    {
        Weight += quantity;
    }

    public void Exercise(double amount)
    {
        Weight -= amount;
    }
}

2. 物件實例化與成員存取

Person myWife = new Person(); // 呼叫無參數建構函式
Console.WriteLine(myWife.Weight); // 10
myWife.Eat(22);
Console.WriteLine(myWife.Weight); // 32
myWife.Exercise(3.2);
Console.WriteLine(myWife.Weight); // 28.8

this 關鍵字在建構函式與方法中代表當前實例,用於區分同名參數與欄位。

二、欄位與屬性:資料封裝的兩種形式

特性欄位屬性
本質直接儲存記憶體位置的變數邏輯欄位,封裝 get/set 存取器
記憶體佔用佔用實際儲存空間不佔用額外記憶體
存取控制難以攔截讀寫可在 set 中驗證、轉換、觸發事件
慣用命名camelCase 或 _camelCasePascalCase
典型用途類別內部實作細節對外公開的資料介面

屬性完整範例

class School
{
    private string _schoolName; // 私有備份欄位

    public string SchoolName
    {
        get { return _schoolName; }
        set { _schoolName = value; } // value 代表傳入的新值
    }
}

屬性讓類別能控制資料如何被讀取與修改,是封裝原則的核心體現。

三、建構函式:物件初始化的關鍵

  • 無參數建構函式:提供預設初始值,若類別未定義任何建構函式,編譯器會自動生成一個。
  • 參數化建構函式:強制呼叫端提供必要資料,確保物件生成即處於有效狀態。
  • 建構函式多載:同一類別可定義多個參數列表不同的建構函式,滿足不同初始化需求。

四、類別圖示意:Person 類別結構

面向過程vs面向對象比較 類別結構示意

總結

類別定義了物件的結構契約,物件是契約的具體實例。透過欄位儲存狀態、屬性控制存取、方法表達行為、建構函式保證初始化,C# 提供完整的面向對象建模工具。下一階段將深入探討繼承、多型、介面等進階 OOP 機制。

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