Differenza tra questo e super in Java

Sommario:

Differenza tra questo e super in Java
Differenza tra questo e super in Java

Video: Differenza tra questo e super in Java

Video: Differenza tra questo e super in Java
Video: Differenza tra equals e == - PILLOLE DI JAVA - TUTORIAL PRATICO PER INIZIARE 2024, Luglio
Anonim

Differenza chiave – questo vs super in Java

Le parole chiave 'this' e 'super' sono utilizzate nella programmazione Java. Queste parole chiave non possono essere utilizzate come variabili o qualsiasi altro nome identificativo. Java supporta la programmazione orientata agli oggetti (OOP). Il programma o il software può essere modellato utilizzando oggetti. Gli oggetti sono insaziabili nell'usare le classi. Uno dei pilastri dell'OOP è l'ereditarietà. Fornisce la riutilizzabilità del codice. Le classi già esistenti sono superclassi e le classi derivate sono sottoclassi. La parola chiave super può essere utilizzata per fare riferimento a un oggetto della superclasse. Ci sono più oggetti nel sistema. La parola chiave "questo" viene utilizzata per fare riferimento a un oggetto corrente. La differenza fondamentale tra this e super è che "questa" è una variabile di riferimento che viene utilizzata per fare riferimento all'oggetto corrente mentre "super" è una variabile di riferimento che viene utilizzata per fare riferimento a un oggetto immediato della superclasse.

Cos'è questo in Java?

La parola chiave 'questo' viene utilizzata per fare riferimento a un oggetto corrente. Fare riferimento al programma Java fornito.

Differenza tra questo e super in Java
Differenza tra questo e super in Java

Figura 01: Programma Java che utilizza questa parola chiave

In Java, ci sono tre tipi di variabili. Sono variabili di istanza, variabili locali e variabili di classe. Secondo il programma sopra, la classe Employee ha due variabili di istanza. Sono id e nome. Le variabili locali sono le variabili che appartengono ai metodi. Le variabili di classe sono condivise da tutti gli oggetti. L'ID e il nome vengono passati al costruttore Employee. Se il programmatore scrive id=id; non inizializzerà le variabili di istanza perché il costruttore ha già ID e nome. Non ci sono valori per le variabili di istanza. Quindi, stampandoli visualizzerà null. Quando lo si utilizza, si riferisce all'oggetto corrente. Pertanto, fornendo id e nome al costruttore è possibile impostare le variabili di istanza.

La parola chiave 'questo' può essere utilizzata per invocare il metodo di classe corrente. Fare riferimento al programma Java fornito.

classe pubblica QuestaDemo{

public static void main(String args){

Myclass myClass=new Myclass();

myClass. B();

}

}

classe Myclass{

vuoto pubblico A(){

System.out.println("A");

}

vuoto pubblico B(){

System.out.printltn("B");

questo. A();

}

}

La classe Myclass contiene due metodi. Sono i metodi A e B. Quando si crea un oggetto di Myclass e si invoca il metodo B, stamperà B, A come output. Nel metodo B, dopo aver stampato B c'è un'istruzione come this. A(). Usando questo, è stato invocato il metodo di classe corrente.

È anche possibile usare questa parola chiave per invocare il costruttore di classe corrente. Fare riferimento al programma indicato.

classe pubblica QuestaDemo{

public static void main(String args){

LA obj=nuovo LA(5);

}

}

classe A{

pubblica A(){

System.out.println("Costruttore A");

}

pubblica A(int x){

questo();

System.out.println("Costruttore parametrizzato A");

}

}

Secondo il programma sopra, la classe A ha un costruttore predefinito e un costruttore parametrizzato. Quando si crea un oggetto di A, viene chiamato il costruttore parametrizzato. Nel costruttore parametrizzato, c'è un'istruzione come this(); Chiamerà il costruttore di classe corrente che è A().

Cos'è super in Java?

La parola chiave 'super' è correlata all'ereditarietà. L'ereditarietà è un concetto importante della programmazione orientata agli oggetti. Consente di utilizzare le proprietà e i metodi della classe già esistente in una nuova classe. La classe già esistente è nota come classe genitore o superclasse. La nuova classe è nota come classe figlia o sottoclasse.

Il 'super' è una variabile di riferimento che viene utilizzata per fare riferimento all'oggetto della classe genitore immediato. La parola chiave super può fare riferimento a una variabile di istanza della classe padre immediata o invocare il metodo della classe padre immediato. Il super() viene utilizzato per invocare il costruttore della classe padre immediato.

Supponiamo che ci siano due classi come A e B. La classe A è la superclasse e la classe B è la sottoclasse. Le classi A e B hanno entrambe il metodo di visualizzazione.

classe pubblica A{

visualizzazione vuota pubblica(){

System.out.println("A");

}

}

la classe pubblica B estende A{

visualizzazione vuota pubblica(){

System.out.println("B");

}

}

Quando si crea un oggetto di tipo B e si chiama il metodo display, verrà restituito l'output B. la classe A ha il metodo di visualizzazione, ma è sovrascritto dal metodo di visualizzazione della sottoclasse B. Se il programmatore vuole chiamare il metodo di visualizzazione in classe A, può usare la parola chiave super. Fare riferimento al programma Java fornito.

Differenza tra questo e super in Java_Figure 02
Differenza tra questo e super in Java_Figure 02

Figura 02: Programma Java che utilizza la parola chiave super

Secondo il programma sopra, la classe A ha una variabile denominata numero con valore 10. La classe B estende A e ha una variabile denominata numero con valore 20. Generalmente, quando si crea un oggetto di tipo B e si chiama il metodo di visualizzazione dovrebbe fornire il numero nella sottoclasse perché il valore della superclasse è sovrascritto dalla nuova classe. Usando il super.num, viene stampato il valore del numero della superclasse.

Il super() può essere usato per chiamare il costruttore della superclasse. Fare riferimento al programma sottostante.

classe pubblica Principale {

public static void main(String args){

B obj=nuovo B();

}

}

classe A{

A(){

System.out.println("A");

}

}

la classe B estende LA{

B(){

super();

System.out.println("B");

}

}

Secondo il programma sopra, la classe A ha un costruttore A (). La classe B ha il costruttore B(). La classe B estende la classe A. Quando si crea un oggetto di tipo B, stamperà A, B come output. Il costruttore B() ha super(). Pertanto, prima viene invocato il costruttore A e quindi passa a B. Anche se super() non è scritto, per impostazione predefinita viene chiamato il costruttore padre.

Il super che usa il metodo è il seguente.

Differenza chiave tra questo e super in Java
Differenza chiave tra questo e super in Java

Figura 03: Programma Java che invoca il metodo della superclasse

Secondo il programma sopra, la classe A ha un metodo di visualizzazione. La classe B ha anche il metodo di visualizzazione. La classe B estende A. Quando si crea un oggetto di tipo B e si chiama il metodo di visualizzazione si ottiene un output come A e B. Nel metodo di visualizzazione di classe B, il metodo di visualizzazione di classe A viene chiamato usando super.display(). Questo metodo stampa prima "A". Quindi stampa "B".

Qual è la somiglianza tra questo e super?

Entrambe sono parole chiave nella programmazione Java

Qual è la differenza tra questo e super?

Questo vs Super

Il 'questo' è una variabile di riferimento utilizzata per fare riferimento all'oggetto corrente. Il 'super' è una variabile di riferimento utilizzata per fare riferimento a un oggetto di superclasse immediato.
Variabile di istanza
È possibile fare riferimento a una variabile di istanza di classe corrente utilizzando questo. La variabile di istanza della superclasse può essere referenziata usando super.
Metodo di classe
Il metodo di classe corrente può essere invocato usando questo. Il metodo Superclass può essere invocato usando super.
Costruttore
Il costruttore di classe corrente può essere invocato usando this(). Il costruttore di superclassi può essere invocato usando super().

Riepilogo – questo vs super in Java

Le parole chiave 'this' e 'super' sono utilizzate in Java. Le parole chiave non possono essere utilizzate come variabili o qualsiasi altro nome identificativo. Sembrano uguali, ma hanno una differenza. La differenza tra questo e super è che super è una variabile di riferimento che viene utilizzata per fare riferimento a un oggetto della superclasse immediata mentre questa è una variabile di riferimento che fa riferimento all'oggetto corrente.

Scarica il PDF di questo vs super in Java

Puoi scaricare la versione PDF di questo articolo e usarla per scopi offline come da nota di citazione. Si prega di scaricare la versione PDF qui: Differenza tra questo e super in Java

Consigliato: