Tìm kiếm Blog này

Chủ Nhật, 9 tháng 1, 2011

ĐA HÌNH - POLYMORPHISM

Xét ví dụ:

using System;
using System.Collections.Generic;
using System.Text;

namespace __OOP_polymorphism
{
    class Program
    {
        static void Main(string[] args)
        {
            Child objchild = new Child();
            Console.WriteLine("Result is " + objchild.methodA().ToString());
            Console.Read();
        }
    }
    class Parent
    {
        public int methodA()
        {
            return methodB() * methodC();
        }
        public virtual int methodB()
        {
            return 1;
        }
        public int methodC()
        {
            return 2;
        }
    }
    class Child : Parent
    {
        public override int methodB()
        {
            return 3;
        }

    }
  
}

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

image008.jpg  


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.

Không có nhận xét nào:

Đăng nhận xét