C#學習 [型別系統] 類(13)

huiy_小溪發表於2024-10-30

概念

定義為 class 的型別是引用型別。 在執行時,如果宣告引用型別的變數,此變數就會一直包含值 null,直到使用 new 運算子顯式建立類例項,或直到為此變數分配已在其他位置建立的相容型別。

//Declaring an object of type MyClass.
MyClass mc = new MyClass();

//Declaring another object of the same type, assigning it the value of the first object.
MyClass mc2 = mc;

宣告

//[access modifier] - [class] - [identifier]
public class Customer
{
   // Fields, properties, methods and events go here...
}

建立

Customer object1 = new Customer();
Customer object2;
Customer object3 = new Customer();
Customer object4 = object3;

建構函式和初始化

建立型別的例項時,需要確保其欄位和屬性已初始化為有用的值。 可透過多種方式初始化值:

  • 接受預設值
  • 欄位初始化表示式
  • 建構函式引數
  • 物件初始值設定項
public class Container
{
    // Initialize capacity field to a default value of 10:
    private int _capacity = 10;
}
public class Container
{
    private int _capacity;

    public Container(int capacity) => _capacity = capacity;
}
從 C# 12 開始,可以將主建構函式定義為類宣告的一部分:
public class Container(int capacity)
{
    private int _capacity = capacity;
}
public class Person
{
    public required string LastName { get; set; }
    public required string FirstName { get; set; }
}
新增 required 關鍵字要求呼叫方必須將這些屬性設定為 new 表示式的一部分:
var p1 = new Person(); // 編譯發生錯誤!!!
var p2 = new Person() { FirstName = "Grace", LastName = "Hopper" };

繼承

類完全支援繼承,建立類時,可以從其他任何未定義為 sealed 的類繼承。 其他類可以從你的類繼承並替代類虛擬方法。

類可以實現一個或多個介面。

public class Manager : Employee
{
    // Employee fields, properties, methods and events are inherited
    // New Manager fields, properties, methods and events go here...
}

相關文章