Sunday, April 5, 2020

சி ஷார்ப்பில் மெத்தட் ஓவர் ரைடிங்க்.


கீழே உள்ள நிரலை சான்றாக எடுத்துக் கொள்வோம்.
using System;

namespace ConsoleApplication13
{
    public class Employee
    {
        public string FirstName = "FN";
        public string Lastname = "LN";
        public void PrintFullName()
        {
            Console.WriteLine(FirstName + " " + Lastname);
        }

    }
    class Program
    {
        static void Main(string[] args)
        {
            Employee e = new Employee();
            e.PrintFullName();

        }
    }
}
மேலே உள்ள நிரலில் Employee என்றொரு கிளாஸ் உள்ளது. அதற்கு 2 பப்ளிக் வேரியபிள் இருக்கின்றன. ஒரு மெத்தட் ஒன்று உள்ளது. அதுவும் பப்ளிக். இதன் வெளியீடு:
FN LN
இப்பொழுது மூன்று டெரிவ்டு ,கிளாஸ் எழுதுவோம்.Employee கிளாசில் உள்ளவை இந்த மூன்று கிளாசிற்கு பொதுவானவை.
public class PartTimeEmployee : Employee
    {
    }
    public class FullTimeEmployee : Employee
    {
    }
    public class TemporaryEmployee : Employee
    {
    }
பிறகு மெயின் மெத்தடில் Employee கிளாசிற்கு ஆப்ஜெக்ட் அர்ரே உருவாக்குவோம்.ஒவ்வொரு ஆப்ஜெக்டும் ஒரு சைல்ட் கிளாஸ் ஆப்ஜெக்டை பாயிண்ட் செய்யட்டும்.

static void Main(string[] args)
        {
            Employee[] employees = new Employee[4];
            employees[0] = new Employee();
            employees[1] = new PartTimeEmployee();
            employees[2] = new FullTimeEmployee();
            employees[3] = new TemporaryEmployee();

        }
பிறகு ஒரு foreach லூப் எழுதுவோம்.
foreach (Employee e in employees)
            {
                e.PrintFullName();
            }
இதன் வெளியீடு:
FN LN
FN LN
FN LN
FN LN
Press any key to continue . . .
பிறகு மூன்று டெரிவ்டு கிளாசிலும் ஒரு PrintFullName மெத்தட் எழுதுவோம்.
public class PartTimeEmployee : Employee
    {
        public void PrintFullName()
        {
            Console.WriteLine(FirstName + " " + Lastname+"-PartTime");
        }
    }
    public class FullTimeEmployee : Employee
    {
        public void PrintFullName()
        {
            Console.WriteLine(FirstName + " " + Lastname+"-FullTime");
        }
    }
    public class TemporaryEmployee : Employee
    {
        public void PrintFullName()
        {
            Console.WriteLine(FirstName + " " + Lastname+"-Temporary");
        }
    }
பிறகு நிரலை இயக்குவோம்.
வெளியீடு:
FN LN
FN LN
FN LN
FN LN
Press any key to continue . . .
டெரிவிடு கிளாசில் உள்ள மெத்தட் பேஸ் கிளாசில் உள்ள மெத்தடை மறைக்க வில்லை.காரணம் பேஸ்  கிளாஸ் ரெஃபெரன்ஸ் என்றாலும் அது சைல்ட் கிளாஸ் ஆப்ஜெக்டை பாயிண்ட் செய்கின்றது.
நம்முடைய தேவைப்படி டெரிவ்டு கிளாசில் உள்ள் மெத்தட் பேஸ் கிளாசில் உள்ள மெத்தடை மறைக்கவில்லை. இதற்கு தீர்வாக பேஸ் கிளாசில் virtual என்ற கீவேர்டுல் டெரிவ்டு கிளாசில் உள்ள மெத்தடுக்கு override என்ற கீவேர்டும் சேர்க்க வேண்டும்.
முழு நிரல்
using System;

namespace ConsoleApplication13
{
    public class Employee
    {
        public string FirstName = "FN";
        public string Lastname = "LN";
        public  virtual void PrintFullName()
        {
            Console.WriteLine(FirstName + " " + Lastname);
        }

    }
    public class PartTimeEmployee : Employee
    {
        public override  void PrintFullName()
        {
            Console.WriteLine(FirstName + " " + Lastname+"-PartTime");
        }
    }
    public class FullTimeEmployee : Employee
    {
        public override  void PrintFullName()
        {
            Console.WriteLine(FirstName + " " + Lastname+"-FullTime");
        }
    }
    public class TemporaryEmployee : Employee
    {
        public override  void PrintFullName()
        {
            Console.WriteLine(FirstName + " " + Lastname+"-Temporary");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Employee[] employees = new Employee[4];
            employees[0] = new Employee();
            employees[1] = new PartTimeEmployee();
            employees[2] = new FullTimeEmployee();
            employees[3] = new TemporaryEmployee();
            foreach (Employee e in employees)
            {
                e.PrintFullName();
            }

        }
    }
}
வெளியீடு:
FN LN
FN LN-PartTime
FN LN-FullTime
FN LN-Temporary
Press any key to continue . . .
பாலிமார்பிசம்.
பாலிமார்பிசம் என்பது ஆப்ஜெக்ட் ஒரியண்டட் புரோக்ராமின் ஒரு முக்கியமான அம்சம் ஆகும்.
இது இயங்கும் நேரத்தில் ஒரு பேஸ் கிளாஸ் ரெஃபெரென்ஸ் மூலம் டெரிவ்டு கிளாஸ் மெத்தடை இன்வோக் செய்ய பயன்படுகின்றது.
பேஸ் கிளாசில் உள்ள மெத்தட் virtual என்றும் டெரிவ்டு கிளாசில் உள்ள மெத்தட்override என்றும் குறிப்பிடப்படுகின்றன.
Virtual கீவேர்டின் அர்த்தம் இந்த மெத்தட் ஆனது டெரிவ்டு கிளாசில் ஓவர் ரைட் செய்து கொள்ளலாம் என்பதேயாகும்.
இதுவே மெத்தட் ஓவர்ரைடிங்க் என அழைக்கப்படுகின்றது.
-முத்து கார்த்திகேயன்,மதுரை.


ads Udanz

No comments:

Post a Comment