Chủ Nhật , 25 Tháng Mười 2020
Trang chủ / HỌC LẬP TRÌNH / C# [C Sharp] / [Học lập trình] – C# – [Bài 29] (C#) – Trừu tượng trong C#

[Học lập trình] – C# – [Bài 29] (C#) – Trừu tượng trong C#

Trừu tượng trong C#


Các lớp và các phương thức trừu tượng

Trừu tượng hóa dữ liệu là quá trình ẩn các thông tin chi tiết nhất định và chỉ hiển thị những thông tin cần thiết tới người dùng. Trừu tượng hóa có thể đạt được với các lớp trừu tượng (abstract classes) hoặc các giao diện trừu tượng (abstract interfaces chúng ta sẽ học ở phần sau).

Từ khóa abstract được sử dụng cho cả các lớp và các phương thức:

  • Abstract class: là một lớp bị giới hạn, nó không thể được sử dụng để tạo các đối tượng (để truy xuất chúng, nó phải được thừa kế bởi một lớp khác).
  • Abstract method: chỉ có thể được sử dụng trong một lớp trừu tượng, và nó không có phần thân. Phần thân được cung cấp bởi lớp dẫn xuất (lớp thừa kế).

Một lớp trừu tượng có thể có cả các phương thức trừu tượng và các phương thức thông thường:

abstract class Animal 
{
  public abstract void animalSound();
  public void sleep() 
  {
    Console.WriteLine("Zzz");
  }
}

Ở ví dụ trên, không thể tạo một đối tượng lớp Animal:

Animal myObj = new Animal(); // Will generate an error (Cannot create an instance of the abstract class or interface 'Animal')

Để truy xuất vào lớp trừu tượng, nó phải được kế thừa từ lớp khác. Hãy chuyển đổi lớp Animal mà chúng ta đã sử dụng trong bài Polymorphism thành một lớp trừu tượng.

Hãy nhớ rằng chúng ta sử dụng biểu tượng dấu hai chấm (:) để thừa kế từ một lớp, và chúng ta sử dụng từ khóa overwrite để nạp chồng phương thức lớp cơ sở.

Ví dụ

// Abstract class
abstract class Animal
{
  // Abstract method (does not have a body)
  public abstract void animalSound();
  // Regular method
  public void sleep()
  {
    Console.WriteLine("Zzz");
  }
}

// Derived class (inherit from Animal)
class Pig : Animal
{
  public override void animalSound()
  {
    // The body of animalSound() is provided here
    Console.WriteLine("The pig says: wee wee");
  }
}

class Program
{
  static void Main(string[] args)
  {
    Pig myPig = new Pig(); // Create a Pig object
    myPig.animalSound();  // Call the abstract method
    myPig.sleep();  // Call the regular method
  }
}

Chạy ví dụ »

Tại sao và khi nào sử dụng các lớp trừu tượng và các phương thức trừu tượng?

Để đạt được sự bảo mật – giúp ẩn các thông tin chi tiết và chỉ hiển thị những chi tiết cần thiết của một đối tượng.

Chú ý rằng: Trừu tượng hóa cũng có thể đạt được với Interfaces, chúng ta sẽ học ở bài sau.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *