天天看點

C#中類和對象、封裝、繼承和多态

作者:CSharp混子

在面向對象程式設計中,類是一種抽象的概念,用于描述具有相似屬性和行為的對象的集合。類定義了對象的結構和行為,并提供了建立對象的模闆。

對象是類的執行個體,它具體化了類的屬性和行為。通過建立對象,我們可以使用類定義的屬性和方法,并在程式中操作對象。

下面是一個簡單的示例,展示了一個名為 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 方法,實作了多态性。

繼續閱讀