Thứ Năm, 7 tháng 1, 2010

C#: Từ khoá abstract

Từ khoá abstract cho phép chúng ta tạo các lớp (class) và các thành viên của lớp (class member) chỉ nhằm mục đích kế thừa.

Một lớp là lớp trừu tượng thì các phương thức và thuộc tính của lớp cũng phải là lớp trừu tượng.

Để khai báo một lớp là lớp trừa tượng thì ta khai báo từ khoá abstract trước tên lớp.

Để khai báo một phương thức là phương thức trừu tượng thì ta khai báo từ khoá abstract trước giá trị trả về của phương thức đó. Phương thức trừu tượng là một pương thức rỗng, không có thân hàm mà chỉ khai báo tên, tham số và giá trị trả về.

Ví dụ:

    //Khai báo lớp trừu tượng

    public abstract class A

    {

        public abstract void DoWork(int i); //Phương thức trừu tượng

    }

 

    public abstract class B

    {

        public void DoWork(int i); //Sai vì lớp B là lớp trừu tượng không thể có phương thức không phải phương thức trừu tượng

    }

Lớp trừu tượng có thể nạp chồng phương thức không phải là phương thức trừu tượng của lớp cha (lớp cơ sở).

Ví dụ:

  

    public class D

    {

        public virtual void DoWork(int i)

        {

            // Original implementation.

        }

    }

 

    //Lớp trừu tượng kế thừa từ 1 lớp không phải lớp trừu tượng

    public abstract class E : D

    {

        public abstract override void DoWork(int i); //Nạp chông phương thức đa hình của lớp cơ sở

    }

 

    public class F : E

    {

        public override void DoWork(int i)

        {

            // New implementation.

        }

    }

Ứng dụng của lớp trừu tượng vào những lớp mà lớp kế thừa thường thay đổi. Ví dụ như là tạo một giao diện cho hình đa giác gồm màu của đường kẻ viền, kích thước đường kẻ viền, màu nền.

Ví dụ:

 

    //Lớp trừu tượng về diao giện hình đa giác

    public abstract class ThemeInfo

    {

        public abstract string BorderColor { get; } //Màu viền

        public abstract string BackgroundColor { get; } //Màu nền

        public abstract int BorderLineWidth { get; } //Độ dày của viền

    }

 

    //Cài đặt màu nền cho hình đa giác là viền đen, nền trắng, nét đơn

    public class BlackWhite1:ThemeInfo

    {

        public override string BorderColor

        {

            get

            {

                return "Black";

            }

        }

        public override string BackgroundColor

        {

            get

            {

                return "White";

            }

        }

 

        public override int BorderLineWidth

        {

            get

            {

                return 1;

            }

        }

    }

 

    //Cài đặt màu nền cho hình đa giác là viền xanh dương,  nền đỏ, nét đôi

    public class GreenRed2 : ThemeInfo

    {

        public override string BorderColor

        {

            get

            {

                return "Green";

            }

        }

        public override string BackgroundColor

        {

            get

            {

                return "Red";

            }

        }

 

        public override int BorderLineWidth

        {

            get

            {

                return 2;

            }

        }

    }

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

Đăng nhận xét