在面向對象程式設計中,類是一種抽象的概念,用于描述具有相似屬性和行為的對象的集合。類定義了對象的結構和行為,并提供了建立對象的模闆。
對象是類的執行個體,它具體化了類的屬性和行為。通過建立對象,我們可以使用類定義的屬性和方法,并在程式中操作對象。
下面是一個簡單的示例,展示了一個名為 Person 的類和兩個對象的建立和使用:
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public void SayHello()
{
Console.WriteLine(#34;Hello, my name is {Name} and I am {Age} years old.");
}
}
class Program
{
static void Main(string[] args)
{
Person person1 = new Person();
person1.Name = "Alice";
person1.Age = 25;
person1.SayHello();
Person person2 = new Person();
person2.Name = "Bob";
person2.Age = 30;
person2.SayHello();
}
}
在上面的示例中,我們定義了一個 Person 類,它具有 Name 和 Age 兩個屬性,以及一個 SayHello 方法。然後,我們建立了兩個 Person 對象 person1 和 person2,并設定它們的屬性值。最後,我們調用了 SayHello 方法來列印出對象的資訊。
封裝
封裝是面向對象程式設計的一個重要原則,它将資料和方法封裝在一個類中,并對外部隐藏實作的細節。通過封裝,我們可以控制對類的通路,并提供公共的接口來使用類的功能。
下面是一個示例,展示了封裝的概念:
class BankAccount
{
private decimal balance;
public void Deposit(decimal amount)
{
balance += amount;
}
public void Withdraw(decimal amount)
{
if (amount <= balance)
{
balance -= amount;
}
else
{
Console.WriteLine("Insufficient funds.");
}
}
public decimal GetBalance()
{
return balance;
}
}
class Program
{
static void Main(string[] args)
{
BankAccount account = new BankAccount();
account.Deposit(1000);
account.Withdraw(500);
Console.WriteLine(#34;Balance: {account.GetBalance()}");
}
}
在上面的示例中,我們定義了一個 BankAccount 類,它具有 balance 私有字段和 Deposit、Withdraw、GetBalance 三個公共方法。通過将 balance 字段設定為私有,我們隐藏了它的實作細節,外部代碼無法直接通路和修改 balance 的值。相反,我們提供了公共的方法來進行存款、取款和擷取餘額的操作。
繼承
繼承是面向對象程式設計中的另一個重要概念,它允許我們建立一個新類(稱為子類或派生類),從一個現有的類(稱為父類或基類)繼承屬性和方法。子類可以繼承父類的屬性和方法,并可以添加自己的額外屬性和方法。
下面是一個示例,展示了繼承的概念:
class Animal
{
public string Name { get; set; }
public void Eat()
{
Console.WriteLine(#34;{Name} is eating.");
}
}
class Dog : Animal
{
public void Bark()
{
Console.WriteLine(#34;{Name} is barking.");
}
}
class Program
{
static void Main(string[] args)
{
Dog dog = new Dog();
dog.Name = "Buddy";
dog.Eat();
dog.Bark();
}
}
在上面的示例中,我們定義了一個 Animal 類,它具有 Name 屬性和 Eat 方法。然後,我們建立了一個 Dog 類,它繼承自 Animal 類,并添加了一個 Bark 方法。通過繼承,Dog 類獲得了 Animal 類的屬性和方法,并可以使用它們。我們建立了一個 Dog 對象 dog,并調用了 Eat 和 Bark 方法。
多态
多态是面向對象程式設計的一個關鍵概念,它允許不同類型的對象對同一個消息做出不同的響應。多态性使得我們可以使用統一的接口來處理不同類型的對象,進而提高代碼的靈活性和可擴充性。
下面是一個示例,展示了多态的概念:
class Shape
{
public virtual void Draw()
{
Console.WriteLine("Drawing a shape.");
}
}
class Circle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a circle.");
}
}
class Rectangle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a rectangle.");
}
}
class Program
{
static void Main(string[] args)
{
Shape shape1 = new Circle();
Shape shape2 = new Rectangle();
shape1.Draw();
shape2.Draw();
}
}
在上面的示例中,我們定義了一個 Shape 類,它具有一個虛拟的 Draw 方法。然後,我們建立了一個 Circle 類和一個 Rectangle 類,它們分别重寫了 Draw 方法。通過使用多态,我們可以将 Circle 對象和 Rectangle 對象指派給 Shape 類型的變量,并調用它們的 Draw 方法。盡管變量的類型是 Shape,但實際上調用的是子類的 Draw 方法,實作了多态性。