Chủ Nhật, 18 tháng 4, 2010

// // 2 comments

Abstract Class và Sealed class

Abstract :
- C# cho phép lớp phương thức hay thuộc tính có thể khai báo abstract. Một lớp abstract không được thể hiện và một phương thức abstract chỉ được đưa ra định nghĩa không được thực thi mà phải được overriden trong bất kỳ lớp kế thừa thừa từ nó. Một phương thức abstract sẽ tự động được khai báo virtual. Nếu một lớp có phương thức abstract thì nó cũng là lớp abstract và được khai báo như sau:
Những lớp được định nghĩa bằng cách dùng từ khóa abstract thì không cho phép khởi tạo đối tượng của lớp ấy.

abstract class Shape
{
      public abstract float calculateArea();      
public void displaySomething()
      {
            Console.WriteLine("Something is displayed");
}
}
class Circle:Shape
{
     float radius;
     public override float calculateArea()
     {
          return radius * 22 / 7;
     }
}



Sealed:
- C# cho phép các lớp và phương thức được khai báo sealed. Điều này có nghĩa là bạn không được quyền thừa kế lớp đó, nếu là phương thức tức là bạn không được phép override nó.

sealed class FinalClass
{
      // etc
}

class DerivedClass : FinalClass //Điều này là sai, trình biên dịch sẽ báo lỗi do kế thừa từ một lớp có khai báo sealed.
{
     // etc
}

class MyClass
{
     public sealed override void FinalMethod()
    {
       // etc.
    }
}

class DerivedClass : MyClass
{
     public override void FinalMethod() // Điều này là sai. trình biên dịch sẽ báo lỗi do ghi đè phương thức có khai báo sealed
    {
    }
}