Bài 13: Polymorphism, Abstract Class & Sealed Class

0
223

Xin chào các bạn. Hôm nay tôi có một chút thời gian. Nên viết ngắn về bài này vậy

Hãy xem đoạn mã sau:

usingSystem; usingSystem.Collections.Generic; usingSystem.Text; namespace_OOPpolymorphism { class Program { static voidMain(string[] args) { Childobjchild = new Child(); Console.WriteLine(Result is + objchild.methodA().ToString()); Console.Read(); } } class Parent { public intmethodA() { returnmethodB() * methodC(); } public virtual intmethodB() { return1; } public intmethodC() { return2; } } class Child: Parent { public override intmethodB() { return3; } } }

Kết quả chạy trương trình

Polymorphism_1

Như bình thường của mô hình kế thừa, kết quả trả về khi gọi hàm methodA() từ đối tượng của lớp Child phải là “Result is 2”. Nhưng trong kết quả trên, kết quả là “Result is 6”. Kết quả này do hàm methodB() tại lớp Child đã override hàm methodB() tại lớp Parent.

Vậy ta có thể khái quát Polymorphism như sau:

  • Polymorphism không chỉ đơn giản là overriding, mà nó là overrding thông minh.
  • Khác biệt giữ Overriding và Polymorphism đó là trong Polymorphism, sự quyết định gọi hàm được thực hiện khi chương trình chạy.

Abstract Class và Sealed class

Abstract Class là lớp dùng để định nghĩa những thuộc tính và hành vi chung của những lớp khác. Một Abstract class được dùng như một lớp cha của các lớp khác. Từ khóa abstract được dùng để định nghĩa một abstract class.

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 floatcalculateArea(); public voiddisplaySomething() { Console.WriteLine(Something is displayed); } } class Circle:Shape { floatradius; public override floatcalculateArea() { returnradius * 22 / 7; } }

Khi thực thi chương trình, bạn không thể tạo đối tượng cho lớp Shape, vì nó là abstract class.

Tạm đến đây vậy :D. Hẹn các bạn ở bài tiếp theo nhé

LEAVE A REPLY

Please enter your comment!
Please enter your name here