Skillnaden mellan detta och super i Java

Innehållsförteckning:

Skillnaden mellan detta och super i Java
Skillnaden mellan detta och super i Java

Video: Skillnaden mellan detta och super i Java

Video: Skillnaden mellan detta och super i Java
Video: Synchronized vs ReadWriteLock vs StampedLock [Java Multithreading] 2024, November
Anonim

nyckelskillnad – detta kontra super i Java

Nyckelorden "detta" och "super" används i Java-programmering. Dessa nyckelord kan inte användas som variabler eller något annat identifierande namn. Java stöder objektorienterad programmering (OOP). Programmet eller programvaran kan modelleras med hjälp av objekt. Objekt är omättade med hjälp av klasser. En pelare i OOP är arv. Det ger kodåteranvändning. De klasser som redan finns är superklasser, och de härledda klasserna är underklasser. Nyckelordet super kan användas för att hänvisa till ett objekt i superklassen. Det finns flera objekt i systemet. Nyckelordet "detta" används för att referera till ett aktuellt objekt. Den viktigaste skillnaden mellan detta och super är att 'detta' är en referensvariabel som används för att hänvisa till det aktuella objektet medan 'super' är en referensvariabel som används för att hänvisa till omedelbart superklassobjekt.

Vad är det här i Java?

Nyckelordet "detta" används för att referera till ett aktuellt objekt. Se det givna Java-programmet.

Skillnaden mellan detta och super i Java
Skillnaden mellan detta och super i Java

Figur 01: Java-program med detta nyckelord

I Java finns det tre typer av variabler. De är instansvariabler, lokala variabler och klassvariabler. Enligt ovanstående program har class Employee två instansvariabler. De är id och namn. Lokala variabler är variablerna som tillhör metoder. Klassvariabler delas av alla objekt. ID och namn skickas till Employee constructor. Om programmeraren skriver id=id; det kommer inte att initiera instansvariablerna eftersom konstruktören redan har id och namn. Det finns inga värden för till exempel variabler. Så om du skriver ut dem visas null. När du använder detta hänvisar det till det aktuella objektet. Att ge id och namn till konstruktorn kan därför ställa in instansvariablerna.

Nyckelordet "this" kan användas för att anropa den aktuella klassmetoden. Se det givna javaprogrammet.

public class ThisDemo{

public static void main(String args){

Myclass myClass=new Myclass();

myClass. B();

}

}

klass Min klass{

public void A(){

System.out.println(“A”);

}

public void B(){

System.out.prinltn(“B”);

this. A();

}

}

Klassen Myclass innehåller två metoder. De är metod A och B. När du skapar ett objekt av Myclass och anropar metod B kommer B, A att skrivas ut som utdata. I metod B, efter utskrift B finns det ett uttalande som this. A(). Med detta anropades den aktuella klassmetoden.

Det är också möjligt att använda detta nyckelord för att anropa den aktuella klasskonstruktorn. Se det givna programmet.

public class ThisDemo{

public static void main(String args){

A obj=new A(5);

}

}

klass A{

public A(){

System.out.println(“Konstruktör A”);

}

public A(int x){

this();

System.out.println(“Parameteriserad konstruktör A”);

}

}

Enligt programmet ovan har klass A en standardkonstruktor och en parametriserad konstruktor. När du skapar ett objekt av A anropas den parametriserade konstruktorn. I den parametriserade konstruktorn finns en sats som denna(); Den kommer att anropa den nuvarande klasskonstruktorn som är A().

Vad är super i Java?

Nyckelordet "super" är relaterat till arv. Arv är ett huvudbegrepp inom objektorienterad programmering. Det gör det möjligt att använda egenskaperna och metoderna för den redan befintliga klassen till en ny klass. Den redan befintliga klassen är känd som förälderklassen eller superklassen. Den nya klassen kallas barnklassen eller underklassen.

‘super’ är en referensvariabel som används för att referera till det omedelbara överordnade klassobjektet. Supernyckelordet kan referera till variabel för omedelbar överordnad klassförekomst eller anropa metoden för omedelbar överordnad klass. Super() används för att anropa omedelbar överordnad klasskonstruktor.

Anta att det finns två klasser som A och B. Klass A är superklassen och klass B är underklassen. Klass A, B har båda visningsmetod.

public klass A{

public void display(){

System.out.println(“A”);

}

}

public klass B förlänger A{

public void display(){

System.out.println(“B”);

}

}

När man skapar ett objekt av typ B och anropar metoden display, kommer det att ge utgången B. klass A har displaymetoden, men den åsidosätts av subklass B display-metoden. Om programmeraren vill anropa visningsmetoden i klass A kan han använda supernyckelordet. Se det givna Java-programmet.

Skillnaden mellan detta och super i Java_Figure 02
Skillnaden mellan detta och super i Java_Figure 02

Figur 02: Java-program med supernyckelord

Enligt ovanstående program har klass A en variabel som heter nummer med värdet 10. Klass B förlänger A och har en variabel som heter nummer med värdet 20. Generellt när man skapar ett objekt av typ B och anropar visningsmetoden ska ge numret i underklassen eftersom superklassens värde åsidosätts av den nya klassen. Genom att använda super.num skrivs superklassens talvärde ut.

Super() kan användas för att anropa superklasskonstruktorn. Se programmet nedan.

public class Main {

public static void main(String args){

B obj=new B();

}

}

klass A{

A(){

System.out.println(“A”);

}

}

klass B förlänger A{

B(){

super();

System.out.println(“B”);

}

}

Enligt programmet ovan har klass A en konstruktor A (). Klass B har konstruktorn B (). Klass B utökar klass A. När du skapar ett objekt av typ B kommer det att skriva ut A, B som utdata. B () konstruktorn har super (). Därför anropas först A-konstruktorn och går sedan till B. Även om super () inte skrivs, kallas den överordnade konstruktorn som standard.

Supern som använder metoden är som följer.

Nyckelskillnaden mellan detta och super i Java
Nyckelskillnaden mellan detta och super i Java

Figur 03: Java-program som anropar superklassmetoden

Enligt ovanstående program har klass A visningsmetod. Klass B har också visningsmetod. Klass B förlänger A. När du skapar ett objekt av typ B och anropar displaymetoden kommer det att ge utdata som A och B. I klass B display metod anropas klass A display metod med super.display(). Den metoden skriver ut "A" först. Skriver sedan ut "B".

Vad är likheten mellan detta och super?

Båda är nyckelord i Java-programmering

Vad är skillnaden mellan detta och super?

This vs Super

Det här är en referensvariabel som används för att referera det aktuella objektet. ‘super’ är en referensvariabel som används för att hänvisa till ett omedelbart superklassobjekt.
Instansvariabel
En aktuell klassinstansvariabel kan refereras med denna. Superclass-instansvariabel kan hänvisas med super.
Klassmetod
Den nuvarande klassmetoden kan anropas med detta. Superclass-metoden kan anropas med super.
Konstruktör
Den nuvarande klasskonstruktorn kan anropas med hjälp av denna(). Superclass-konstruktorn kan anropas med super().

Sammanfattning – detta kontra super i Java

Nyckelorden "detta" och "super" används i Java. Nyckelorden kan inte användas som variabler eller något annat identifierande namn. De verkar vara lika, men de har en skillnad. Skillnaden mellan detta och super är att super är en referensvariabel som används för att referera till omedelbart superklassobjekt medan detta är en referensvariabel som refererar till det aktuella objektet.

Ladda ned PDF-filen för detta vs super i Java

Du kan ladda ner PDF-versionen av den här artikeln och använda den för offlineändamål enligt citat. Ladda ner PDF-versionen här: Difference Between this and super in Java

Rekommenderad: