Thứ Ba, 3 tháng 3, 2015

Thực thi kế thừa (trong C#)

Mô hình tiến hành thực thi kế thừa

Code ví dụ mô tả lớp Listbox được dẫn xuất từ lớp Window

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

namespace UsingInheritance
{
    public class Window
    {
        // Hàm khởi dựng lấy hai số nguyên chỉ
        // đến vị trí của cửa sổ trên console
        public Window(int top, int left)
        {
            this.top = top;
            this.left = left;
        }

        // Mô phỏng vẽ cửa sổ
        public void DrawWindow()
        {
            Console.WriteLine("Drawing Window at {0}, {1}", top, left);
        }

        // Khai báo hai biến thành viên private
        // do đó hai biến này sẽ không thấy trong lớp 
        // dẫn xuất
        private int top;
        private int left;
    }

    // ListBox dẫn xuất từ Window
    public class ListBox : Window
    {
        // Khởi dựng có tham số
        public ListBox(int top,int left, string theContents)
            : base(top, left) // gọi khởi dựng của lớp cơ sở
        {
            mListBoxContents = theContents;
        }

        // tạo một phiên bản mới cho phương thức DrawWindow
        // vì trong lớp dẫn xuất muốn thay đổi hành vi thực hiện
        // bên trong phương thức này
        public new void DrawWindow()
        {
            base.DrawWindow();
            Console.WriteLine("Listbox write: {0}", mListBoxContents);
        }

        // thêm biến thành viên private
        private string mListBoxContents;
    }

    class Program
    {
        static void Main(string[] args)
        {
            // Tạo đối tượng cho lớp cơ sở
            Window w = new Window(5, 10);
            w.DrawWindow();

            // Tạo đối tượng cho lớp dẫn xuất
            ListBox lb = new ListBox(20, 10, "Hello Listbox");
            lb.DrawWindow();
        }
    }
}

Kết quả in ra:

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

Đăng nhận xét

Cám ơn bạn đã quan tâm đến bài viết của mình nhé!