什麼是類別(Class)

類別(Class)是一種句法結構,它實現了物件導向概念中的3個基礎特性,繼承、封裝、多型,讓物件導向程式設計(Object-Oriented Programming, OOP)得以實現。

類別的組成

類別中集合了與其定義的類別相關聯的資訊、行為、規則等。 類別的組成分為變數(Variable)以及方法(Method),這兩個元素用來表現這個類別的狀態和行為。

繼承

namespace Example;
public class Parent
{
    public string _parentData = "parent_data";
    public void Say()
    {
        Console.WriteLine($"Hi, this is {_parentData}");
    }
}

public class Child : Parent{}

public class App
{
    public static void Main()
    {
        var parent = new Parent();
        var child = new Child();
        Console.WriteLine($"Parent:{parent._parentData}, Child:{child._parentData}");
        Console.Write("Parent Say: ");
        parent.Say();
        Console.Write("Child Say: ");
        child.Say();
    }
}

封裝

namespace Example;
public class Encapsulation
{
    public string _publicData = "public_data";
    private string _privateData= "private_data";
}

public class App
{
    public static void Main()
    {
        var encapsulation = new Encapsulation();
        Console.WriteLine(encapsulation._publicData);

        // Compile Error : error CS0122
        Console.WriteLine(encapsulation._privateData);
    }
}

多型

namespace Example;
public abstract class Animal
{
    public abstract void Yell();
}

public class Cat : Animal
{
    public override void Yell() { Console.WriteLine("Meow!"); }
}

public class Dog : Animal
{
    public override void Yell() { Console.WriteLine("Woof!"); }
}

public class App
{
    public static void Main()
    {
        Animal cat = new Cat();
        Animal dog = new Dog();
        cat.Yell();
        dog.Yell();
    }
}

類別和實例(Instance)的差別

類別是實例前的物件,實例則是透過分配記憶體資源給類別之後得以在電腦中運行的程式軟體。
可以想像成類別其實是一張房子的藍圖,而實例則是透過分配給藍圖需要的土地(記憶體)後在這個土地上所建築起來的擁有實體的房子。

Last Updated:
Contributors: eisen