Monday 6 June 2016

ஜாவாவில் super கீவேர்டின் பயன்பாடு:






ஜாவாவில் parent class என்பது நாம் எந்த கிளாசை அடிப்படையாக கொள்கின்றோமோ அதனைக் குறிக்கும்.அதனிலிருந்து நீட்டுவிக்கப்படும் (extend or inherit)கிளாஸ் child class எனப்படும்.சில சமயங்களில் நாம் சைல்ட் கிளாசில் இருந்த படி பேரண்ட் கிளாசின் வேரியபிளையோ, கன்ஸ்ட்ரக்டரையோ அல்லது மெத்தடையோ refer செய்ய வேண்டியிருக்கும்.அப்போது அவ்வாறு refer செய்வதற்கு நாம் உபயோகிக்கும் கீவேர்ட் super keyword ஆகும்.
Super கீவேர்ட் பின் வரும் மூன்று வழிகளில் பயன்படுகின்றது.
1.   உடனடியான parent class-ன் வேரியபிளை refer செய்வதற்கு.
2.   பேரன்ட் கிளாசின் கன்ஸ்ட்ரக்டரை explicit ஆக அழைப்பதற்கு.
3.   பேரன்ட் கிளாசின் மெத்தடை அழைப்பதற்கு.

உடனடியான parent class-ன் வேரியபிளை refer செய்வது

     பின் வரும் நிரலில் Employee கிளாசில் salary எனும் வேரியபிள் உள்ளது.
அதன் child class ஆன Manager கிளாசிலும் salary எனும் வேரியபிள் உள்ளது.
அதன் display மெத்தடில் salary என்ற வேரியபிளை பிரின்ட் செய்தால் சைல்ட் கிளாசில் உள்ள வேரியபிளின் மதிப்பு தான் பிரிண்ட் ஆகும்.

சான்று நிரல்-1

package manager;
class Employee
{
    int  salary=20000;
}

public class Manager extends Employee{
      int salary=35000;
      void display()
      {
          System.out.println(salary);
      }
   
    public static void main(String[] args) {
        Manager m=new Manager();
        m.display();
    }
   
}

வெளியீடு:

run:
35000
BUILD SUCCESSFUL (total time: 1 second)

நாம் சைல்ட் கிளாசில் இருந்த படியே பேரண்ட் வேரியபிளின் மதிப்பை பிரிண்ட் செய்வதற்கு பின் வரும் நிரலில் salary என்று பிரின்ட் செய்வதற்கு பதிலாக super.salary என்று பிரிண்ட் செய்துள்ளோம். அதே வேளையில் salary என்றும் பிரிண்ட் செய்துள்ளோம்.

சான்று நிரல்-2

package manager1;
class Employee
{
    int  salary=20000;
}

public class Manager1 extends Employee {
int salary=35000;
void display()
{
    System.out.println(super.salary);
    System.out.println(salary);
}
  
    public static void main(String[] args) {
       Manager1 m=new Manager1();
       m.display();;
    }
   
}
வெளியீடு:
run:
20000
35000
BUILD SUCCESSFUL (total time: 0 seconds)
பேரன்ட் கிளாசின் கன்ஸ்ட்ரக்டரை explicit ஆக அழைப்பது
பின் வரும் நிரலில் சைல்ட் கிளாசில் இருந்த படியே பேரண்ட் கிளாஸ் கன்ஸ்ட்ரக்டரை explicit ஆக அழைத்திருக்கின்றோம்.முதலில் Employee constructor அழைக்கப்பட்டிருக்கின்றது. பின்பு Manager2 constructor அழைக்கப் பட்டிருக்கின்றது.
சான்று நிரல்-3
package manager2;

class Employee
{
    Employee()
    {
        System.out.println("Employee is created");
    }
}
public class Manager2 extends Employee{

    Manager2()
    {
        super();
        System.out.println("Manager is created");
    }
    public static void main(String[] args) {
       Manager2 m=new Manager2();
    }
   
}
வெளியீடு:’
run:
Employee is created
Manager is created
BUILD SUCCESSFUL (total time: 1 second)
குறிப்பு:
Super() எனும் வரி ஒவ்வொரு சைல்ட் கிளாஸ் கன்ஸ்ட்ரக்டரிலும் கம்பைலரால் தானாகவே Add செய்யப்படுகின்றது. மேலே உள்ள நிரலில் நாம்
பேரண்ட் கிளாஸ் கன்ஸ்ட்ரக்டரை explicit ஆக super keyword உபயோகித்து அழைத்திருக்கின்றோம்.

பேரன்ட் கிளாசின் மெத்தடை அழைப்பது
பின் வரும் நிரலில் parent class ஆனது display() எனும் மெத்தடை கொண்டுள்ளது. Child class ஆனதும் display() எனும் மெத்தடை கொன்டுள்ளது.
super.display() என அழைக்கப்படும் பொழுது பேரண்ட் கிளாஸ் மெத்தடும்
display()என அழைக்கப்படும் பொழுது சைல்ட் கிளாஸ் மெத்தடும் அழைக்கப்பட்டிருப்பதை நிரலில் நோக்குக.
சான்று நிரல் -4
package manager3;
class Employee
{
    void display()
    {
        System.out.println("Employee display");
    }
}

public class Manager3 extends Employee {
void display()
{
    System.out.println("Manager display");
}
void show()
{
    super.display();
    display();
}
   
    public static void main(String[] args) {
        Manager3 m=new Manager3();
        m.show();
    }
   
}
வெளியீடு:
run:
Employee display
Manager display
BUILD SUCCESSFUL (total time: 0 seconds)
பின் வரும் சூழலில் பேரண்ட் கிளாஸ் மெத்தடை அழைப்பதற்கு super  எனும் key word தேவைப்படாது. ஏனெனில் display எனும் மெத்தட் பேரண்ட் கிளாசில் மட்டுமே உள்ளது.Child class ஆனதில் அதே பெயரில் மெத்தெட் இல்லை.
சான்று நிரல்-5:
package manager4;
class Employee
{
    void display()
    {
        System.out.println("Employee display");
    }
}

public class Manager4 extends Employee{

    void show()
    {
        display();
    }
    public static void main(String[] args) {
        Manager4 m=new Manager4();
        m.show();
    }
   
}
வெளியீடு:
run:
Employee display
BUILD SUCCESSFUL (total time: 0 seconds)
நான் மதுரையில் 10th,+1,+2 மாணவர்களுக்கான (icse,cbse,samacheer) computer science lessons எடுத்து வருகின்றேன். மேலும் c,cpp,java,dotnet,php,tally,ms-office,photoshop,coreldraw class ஆகியனவும் நடத்தி வருகின்றேன்
தொடர்புக்கு:
91 9629329142
                                    -முத்து கார்த்திகேயன்,மதுரை


No comments:

Post a Comment