วันเสาร์ที่ 27 มิถุนายน พ.ศ. 2558

C# Abstract Class คืออะไร

    Abstract Class คือ Class ชนิดหนึ่งที่มีคุณสมบัติพิเศษ คือ สามารถมี Method ได้ทั้งแบบมีส่วนการประมวลผล กับแบบ Method ที่มีเพียงแค่ชื่อเพียงเท่านั่น ยกตัวอย่าง

    abstract class Customer
    {
        public void PrintCustomer()
        {
            Console.WriteLine(“Customer X”);
        }
        public abstract void PrintCustomerAddress();
    }


    class UnitTest : Customer  //extends

     {
        public override void PrintCustomerAddress()
        {
            Console.WriteLine(“CustomerAddress”);
        }
    }


namespace ConsoleUnitTest
{
    class Program
    {      
        static void Main(string[] args)
        {

            UnitTest t = new UnitTest ();
            t.PrintCustomer();
            t.PrintCustomerAddress();

        }
    }

กรณีศึกษา
      สมมติว่ามี class ไว้เก็บข้อมูลพนักงานขายสินค้า พนักงานขับรถ และผู้บริหาร โดยพนักงานทุกคนในบริษัทจะได้รับโบนัสปีละ 1 ครั้ง
      กรณีนี้เราจะเห็นว่าพนักงานทุกประเภทสามารถ GetBonus() ได้ เราจึงควรสร้าง base class ขึ้นมาใหม่และย้าย method นี้ไปไว้ที่ base class แต่ปัญหายังไม่จบ เพราะวิธีการคำนวนโบนัสของแต่ละคนแตกต่างกัน ทำให้เราไม่สามารถ implement GetBonus() ไว้ที่ base class ได้ หรือถ้าเราสร้างเป็น method ที่ไม่มี implementation ไว้ เราอาจจะสร้าง sub class ตัวใหม่ขึ้นมาและลืม implement method นี้ทำให้พนักงานประเภทนั้นไม่ได้รับโบนัสตอนสิ้นปี
เพื่อบังคับให้ทุก sub class implement method GetBonus() เราจึงควรกำหนด method GetBonus() ที่ base class ให้เป็น abstract


ref : http://www.narisa.com/forums/index.php?showtopic=32477

ไม่มีความคิดเห็น:

แสดงความคิดเห็น