Nøgleforskel – dette versus super i Java
Nøgleordene 'this' og 'super' bruges i Java-programmering. Disse nøgleord kan ikke bruges som variabler eller andre identifikationsnavne. Java understøtter objektorienteret programmering (OOP). Programmet eller softwaren kan modelleres ved hjælp af objekter. Objekter er umættede ved hjælp af klasser. En søjle i OOP er arv. Det giver kodegenanvendelighed. De klasser, der allerede eksisterer, er superklasser, og de afledte klasser er underklasser. Super nøgleordet kan bruges til at henvise til et objekt af superklassen. Der er flere objekter i systemet. Nøgleordet 'dette' bruges til at henvise til et aktuelt objekt. Den vigtigste forskel mellem dette og super er, at 'dette' er en referencevariabel, der bruges til at henvise til det aktuelle objekt, mens 'super' er en referencevariabel, der bruges til at henvise til det umiddelbare superklasseobjekt.
Hvad er det her i Java?
Nøgleordet 'dette' bruges til at henvise til et aktuelt objekt. Se det givne Java-program.
Figur 01: Java-program, der bruger dette søgeord
I Java er der tre typer variabler. De er instansvariabler, lokale variabler og klassevariabler. Ifølge ovenstående program har klassemedarbejder to instansvariabler. De er id og navn. Lokale variabler er de variabler, der tilhører metoder. Klassevariabler deles af alle objekter. Id'et og navnet videregives til medarbejderkonstruktøren. Hvis programmøren skriver id=id; det vil ikke initialisere instansvariablerne, fordi konstruktøren allerede har id og navn. Der er ingen værdier for f.eks. variable. Så udskrivning af dem vil vise null. Når du bruger dette, refererer det til det aktuelle objekt. Derfor kan det at give id og navn til konstruktøren indstille instansvariablerne.
Nøgleordet 'this' kan bruges til at påkalde den aktuelle klassemetode. Se det givne java-program.
offentlig klasse Denne Demo{
public static void main(String args){
Myclass myClass=new Myclass();
myClass. B();
}
}
klasse Min klasse{
public void A(){
System.out.println(“A”);
}
public void B(){
System.out.prinltn(“B”);
this. A();
}
}
Klassen Myclass indeholder to metoder. De er metode A og B. Når du opretter et objekt af Myclass og påberåber metode B, udskriver B, A som output. I metode B er der efter udskrivning B en sætning som denne. A(). Ved at bruge dette blev den aktuelle klassemetode aktiveret.
Det er også muligt at bruge dette nøgleord til at starte den aktuelle klassekonstruktør. Se det givne program.
offentlig klasse Denne Demo{
public static void main(String args){
A obj=new A(5);
}
}
klasse A{
public A(){
System.out.println(“Konstruktør A”);
}
public A(int x){
this();
System.out.println(“Parameteriseret konstruktør A”);
}
}
I henhold til ovenstående program har klasse A en standardkonstruktør og en parametriseret konstruktør. Når du opretter et objekt af A, kaldes den parametriserede konstruktør. I den parameteriserede konstruktør er der en sætning som denne(); Det vil kalde den nuværende klassekonstruktør, der er A().
Hvad er super i Java?
Nøgleordet 'super' er relateret til arv. Arv er et hovedbegreb inden for objektorienteret programmering. Det gør det muligt at bruge egenskaberne og metoderne for den allerede eksisterende klasse til en ny klasse. Den allerede eksisterende klasse er kendt som forældreklassen eller superklassen. Den nye klasse er kendt som underklassen eller underklassen.
'superen' er en referencevariabel, der bruges til at henvise til det umiddelbare overordnede klasseobjekt. Supernøgleordet kan henvise til den umiddelbare overordnede klasseforekomstvariabel eller påberåbe den umiddelbare overordnede klassemetode. Super() bruges til at påkalde umiddelbar overordnet klassekonstruktør.
Antag, at der er to klasser som A og B. Klasse A er superklassen og klasse B er underklassen. Klasse A, B har begge visningsmetode.
offentlig klasse A{
public void display(){
System.out.println(“A”);
}
}
public klasse B forlænger A{
public void display(){
System.out.println(“B”);
}
}
Når du opretter et objekt af type B og kalder metoden display, vil det give output B. klasse A har displaymetoden, men den tilsidesættes af subclass B display-metoden. Hvis programmøren vil kalde visningsmetoden i klasse A, så kan han bruge super nøgleordet. Se det givne Java-program.
Figur 02: Java-program, der bruger supernøgleord
I henhold til ovenstående program har klasse A en variabel ved navn nummer med værdien 10. Klasse B udvider A og har en variabel navngivet nummer med værdi 20. Generelt, når du opretter et objekt af type B og kalder visningsmetoden skal give tallet i underklassen, fordi superklassens værdi tilsidesættes af den nye klasse. Ved at bruge super.num udskrives superklassens talværdi.
Super() kan bruges til at kalde superklassekonstruktøren. Se nedenstående program.
offentlig klasse Main {
public static void main(String args){
B obj=new B();
}
}
klasse A{
A(){
System.out.println(“A”);
}
}
klasse B forlænger A{
B(){
super();
System.out.println(“B”);
}
}
Ifølge ovenstående program har klasse A en konstruktør A (). Klasse B har konstruktøren B (). Klasse B udvider klasse A. Når du opretter et objekt af type B, vil det udskrive A, B som output. B () konstruktøren har super (). Derfor aktiveres først A-konstruktøren og går derefter til B. Selvom super () ikke er skrevet, kaldes den overordnede konstruktør som standard.
Superen, der bruger metoden, er som følger.
Figur 03: Java-program, der påberåber sig superklassemetoden
I henhold til ovenstående program har klasse A en visningsmetode. Klasse B har også visningsmetode. Klasse B udvider A. Når du opretter et objekt af type B og kalder visningsmetoden vil det give output som A og B. I klasse B visningsmetode kaldes klasse A visningsmetode ved hjælp af super.display(). Denne metode udskriver "A" først. Udskriver derefter "B".
Hvad er ligheden mellem dette og super?
Begge er nøgleord i Java-programmering
Hvad er forskellen mellem dette og super?
This vs Super |
|
'dette' er en referencevariabel, der bruges til at henvise til det aktuelle objekt. | 'superen' er en referencevariabel, der bruges til at henvise til et umiddelbart superklasseobjekt. |
Forekomstvariabel | |
En aktuel klasseinstansvariabel kan henvises ved hjælp af denne. | Superclass-forekomstvariabel kan henvises ved hjælp af super. |
Klassemetode | |
Den aktuelle klassemetode kan aktiveres ved hjælp af denne. | Superclass-metoden kan påberåbes ved hjælp af super. |
Konstruktør | |
Den aktuelle klassekonstruktør kan aktiveres ved hjælp af denne(). | Superklasse-konstruktør kan startes ved hjælp af super(). |
Oversigt – dette versus super i Java
Nøgleordene 'this' og 'super' bruges i Java. Nøgleordene kan ikke bruges som variabler eller andre identifikationsnavne. De ser ud til at være ens, men de har en forskel. Forskellen mellem dette og super er, at super er en referencevariabel, der bruges til at henvise til det umiddelbare superklasseobjekt, mens dette er en referencevariabel, der henviser til det aktuelle objekt.
Download PDF'en af denne vs super i Java
Du kan downloade PDF-versionen af denne artikel og bruge den til offline-formål i henhold til citatnotat. Download venligst PDF-versionen her: Forskellen mellem dette og super i Java