ஜாவாவில் 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