Tạo object của abstract class trong C#

Tất nhiên là không tạo được rồi. Ví dụ mình có 1 abstract class như sau:

abstract class Fruit
{
   private int numberOfFruit;
   public int getNumberOfFruit()
   {
      return this.numberOfFruit;
   }
}

Đoạn code dưới đây sẽ bị lỗi

public Fruit createObject()
{
   Fruit myFruit = new Fruit();
   return myFruit;
}

Nhưng nếu ta dùng tính kế thừa, nói cụ thể là áp dụng Abstract Factory Pattern như sau:

class Banana : Fruit
{
   int weight;
   public Banana(int weight)
   {
      this.weight = weight;
   }
}

Thì đoạn code này sẽ không bị lỗi:

public Fruit createBanana
{
   Fruit banana = new Banana(15);
   return banana;
}

Lí do chạy được là vì polymorphism. Mình hiểu vậy có đúng không?

đúng rồi đó bạn, cơ bản là bạn cứ nghĩ abstract thì k thể new class abstract được

3 Likes

Abstract class chỉ dùng để kế thừa.
Ngược lại với nó là sealed class chỉ dùng để tạo đối tượng mà không thể kế thừa.

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?