The super Java atslēgvārds ir atsauces mainīgais, kas tiek izmantots, lai atsauktos uz tiešo vecāku klases objektu.
Ikreiz, kad veidojat apakšklases gadījumu, netieši tiek izveidots vecākklases gadījums, uz kuru atsaucas super atsauces mainīgais.
Java super atslēgvārda izmantošana
- super var izmantot, lai atsauktos uz tiešo vecāku klases instances mainīgo.
- super var izmantot, lai izsauktu tūlītēju vecāku klases metodi.
- super() var izmantot, lai izsauktu tūlītēju vecāku klases konstruktoru.
1) super tiek izmantots, lai atsauktos uz tiešo vecāku klases instances mainīgo.
Mēs varam izmantot super atslēgvārdu, lai piekļūtu vecāku klases datu dalībniekam vai laukam. To izmanto, ja vecākklasei un pakārtotajai klasei ir vienādi lauki.
rindas autocad komanda
class Animal{ String color='white'; } class Dog extends Animal{ String color='black'; void printColor(){ System.out.println(color);//prints color of Dog class System.out.println(super.color);//prints color of Animal class } } class TestSuper1{ public static void main(String args[]){ Dog d=new Dog(); d.printColor(); }}Izmēģiniet to tūlīt
Izvade:
black white
Iepriekš minētajā piemērā abām klasēm dzīvnieks un suns ir kopīga īpašuma krāsa. Ja mēs drukājam krāsu rekvizītu, tas pēc noklusējuma izdrukās pašreizējās klases krāsu. Lai piekļūtu vecākajam īpašumam, mums ir jāizmanto super atslēgvārds.
2) super var izmantot, lai izsauktu vecāku klases metodi
Super atslēgvārdu var izmantot arī, lai izsauktu vecāku klases metodi. Tas jāizmanto, ja apakšklasē ir tāda pati metode kā vecākklasē. Citiem vārdiem sakot, to izmanto, ja metode ir ignorēta.
class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void eat(){System.out.println('eating bread...');} void bark(){System.out.println('barking...');} void work(){ super.eat(); bark(); } } class TestSuper2{ public static void main(String args[]){ Dog d=new Dog(); d.work(); }}Izmēģiniet to tūlīt
Izvade:
eating... barking...
Iepriekš minētajā piemērā Animal un Dog abām klasēm ir ēst() metode, ja mēs izsaucam eat() metodi no Dog klases, tā pēc noklusējuma izsauks Dog klases metodi eat(), jo prioritāte tiek piešķirta vietējai.
Lai izsauktu vecākklases metodi, mums ir jāizmanto super atslēgvārds.
3) super tiek izmantots, lai izsauktu vecāku klases konstruktoru.
Super atslēgvārdu var izmantot arī, lai izsauktu vecākklases konstruktoru. Apskatīsim vienkāršu piemēru:
class Animal{ Animal(){System.out.println('animal is created');} } class Dog extends Animal{ Dog(){ super(); System.out.println('dog is created'); } } class TestSuper3{ public static void main(String args[]){ Dog d=new Dog(); }}Izmēģiniet to tūlīt
Izvade:
animal is created dog is created
Piezīme: super() katrā klases konstruktorā tiek pievienots automātiski kompilators, ja nav super() vai this().
Kā mēs labi zinām, noklusējuma konstruktoru kompilators nodrošina automātiski, ja konstruktora nav. Bet tas arī pievieno super() kā pirmo paziņojumu.
Vēl viens super atslēgvārda piemērs, kur kompilators nodrošina super() netieši.
class Animal{ Animal(){System.out.println('animal is created');} } class Dog extends Animal{ Dog(){ System.out.println('dog is created'); } } class TestSuper4{ public static void main(String args[]){ Dog d=new Dog(); }}Izmēģiniet to tūlīt
Izvade:
animal is created dog is created
super piemērs: reāla izmantošana
Apskatīsim atslēgvārda super reālo izmantošanu. Šeit Emp klase manto Personas klasi, tāpēc visi personas rekvizīti pēc noklusējuma tiks mantoti Emp. Lai inicializētu visu īpašumu, mēs izmantojam vecāku klases konstruktoru no bērnu klases. Tādā veidā mēs atkārtoti izmantojam vecāku klases konstruktoru.
class Person{ int id; String name; Person(int id,String name){ this.id=id; this.name=name; } } class Emp extends Person{ float salary; Emp(int id,String name,float salary){ super(id,name);//reusing parent constructor this.salary=salary; } void display(){System.out.println(id+' '+name+' '+salary);} } class TestSuper5{ public static void main(String[] args){ Emp e1=new Emp(1,'ankit',45000f); e1.display(); }}Izmēģiniet to tūlīt
Izvade:
1 ankit 45000