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

// // 1 comment

Đ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.

1 comments:

Unknown nói...

I can proudly tell you that I love you, even though people have laughed, it was so ordinary thing always.
---
biet thu dep hien dai | thiet ke nha xinh | cong ty nha xinh| biet thu dep co dien