Diferença entre this e super em Java

Índice:

Diferença entre this e super em Java
Diferença entre this e super em Java

Vídeo: Diferença entre this e super em Java

Vídeo: Diferença entre this e super em Java
Vídeo: This ou Super, qual usar no Java? 2024, Julho
Anonim

Key Difference – isso vs super em Java

As palavras-chave 'this' e 'super' são usadas na programação Java. Essas palavras-chave não podem ser usadas como variáveis ou qualquer outro nome de identificador. Java suporta Programação Orientada a Objetos (OOP). O programa ou software pode ser modelado usando objetos. Objetos são insaciáveis usando classes. Um pilar da POO é a herança. Ele fornece a reutilização de código. As classes que já existem são superclasses e as classes derivadas são subclasses. A palavra-chave super pode ser usada para referenciar um objeto da superclasse. Existem vários objetos no sistema. A palavra-chave ‘this’ é usada para referenciar um objeto atual. A principal diferença entre this e super é que 'this' é uma variável de referência que é usada para referenciar o objeto atual, enquanto 'super' é uma variável de referência que é usada para referenciar o objeto imediato da superclasse.

O que é isso em Java?

A palavra-chave ‘this’ é usada para referenciar um objeto atual. Consulte o programa Java fornecido.

Diferença entre isso e super em Java
Diferença entre isso e super em Java

Figura 01: Programa Java usando esta palavra-chave

Em Java, existem três tipos de variáveis. São variáveis de instância, variáveis locais e variáveis de classe. De acordo com o programa acima, a classe Employee possui duas variáveis de instância. Eles são id e nome. Variáveis locais são as variáveis pertencentes a métodos. As variáveis de classe são compartilhadas por todos os objetos. O id e o nome são passados para o construtor Employee. Se o programador escreve id=id; ele não inicializará as variáveis de instância porque o Construtor já possui id e nome. Não há valores para variáveis de instância. Portanto, imprimi-los exibirá null. Ao usar isso, ele se refere ao objeto atual. Portanto, fornecer id e nome ao construtor pode definir as variáveis de instância.

A palavra-chave ‘this’ pode ser usada para invocar o método da classe atual. Consulte o programa java fornecido.

public class ThisDemo{

public static void main(String args){

Minhaclasse minhaClasse=new Minhaclasse();

myClass. B();

}

}

class Minhaclasse{

public void A(){

System.out.println(“A”);

}

public void B(){

System.out.prinltn(“B”);

this. A();

}

}

A classe Minhaclasse contém dois métodos. Eles são o método A e B. Ao criar um objeto de Myclass e invocar o método B irá imprimir B, A como saída. No método B, após a impressão de B, há uma instrução como this. A(). Usando isso, o método da classe atual foi invocado.

Também é possível usar esta palavra-chave para invocar o construtor da classe atual. Consulte o programa fornecido.

public class ThisDemo{

public static void main(String args){

A obj=new A(5);

}

}

classe A{

public A(){

System.out.println(“Construtor A”);

}

public A(int x){

this();

System.out.println(“Construtor parametrizado A”);

}

}

De acordo com o programa acima, a classe A tem um construtor padrão e um construtor parametrizado. Ao criar um objeto de A, o construtor parametrizado é chamado. No construtor parametrizado, existe uma declaração como this(); Ele chamará o construtor da classe atual que é A().

O que é super em Java?

A palavra-chave 'super' está relacionada à herança. Herança é um conceito importante da Programação Orientada a Objetos. Permite usar as propriedades e métodos da classe já existente para uma nova classe. A classe já existente é conhecida como classe pai ou superclasse. A nova classe é conhecida como classe filha ou subclasse.

O 'super' é uma variável de referência que é usada para referenciar o objeto de classe pai imediato. A palavra-chave super pode fazer referência à variável de instância da classe pai imediata ou invocar o método de classe pai imediato. O super() é usado para invocar o construtor imediato da classe pai.

Assuma que existem duas classes como A e B. A classe A é a superclasse e a classe B é a subclasse. Classe A, B ambos têm método de exibição.

classe pública A{

public void display(){

System.out.println(“A”);

}

}

classe pública B estende A{

public void display(){

System.out.println(“B”);

}

}

Ao criar um objeto do tipo B e chamar o método display, ele dará a saída B. a classe A tem o método display, mas é substituído pelo método display da subclasse B. Se o programador quiser chamar o método display na classe A, ele poderá usar a palavra-chave super. Consulte o programa Java fornecido.

Diferença entre this e super em Java_Figura 02
Diferença entre this e super em Java_Figura 02

Figura 02: Programa Java usando super palavra-chave

De acordo com o programa acima, a classe A tem uma variável chamada número com valor 10. A classe B estende A e tem uma variável chamada número com valor 20. Geralmente, ao criar um objeto do tipo B e chamar o método display deve fornecer o número na subclasse porque o valor da superclasse é substituído pela nova classe. Ao usar o super.num, o valor do número da superclasse é impresso.

O super() pode ser usado para chamar o construtor da superclasse. Consulte o programa abaixo.

classe pública Principal {

public static void main(String args){

B obj=new B();

}

}

classe A{

A(){

System.out.println(“A”);

}

}

classe B estende A{

B(){

super();

System.out.println(“B”);

}

}

De acordo com o programa acima, a classe A tem um construtor A(). A classe B tem o construtor B(). A classe B estende a classe A. Ao criar um objeto do tipo B, ele imprimirá A, B como saída. O construtor B() tem super(). Portanto, primeiro o construtor A é invocado e depois vai para B. Mesmo que super() não seja escrito, por padrão o construtor pai é chamado.

O super usando o método é o seguinte.

Diferença chave entre isso e super em Java
Diferença chave entre isso e super em Java

Figura 03: Programa Java que invoca o método da superclasse

De acordo com o programa acima, a classe A tem método de exibição. A classe B também possui o método de exibição. A classe B estende A. Ao criar um objeto do tipo B e chamar o método de exibição, a saída será A e B. No método de exibição da classe B, o método de exibição da classe A é chamado usando super.display(). Esse método imprime “A” primeiro. Em seguida, imprime “B”.

Qual é a semelhança entre este e super?

Ambos são palavras-chave na programação Java

Qual é a diferença entre este e super?

Isto vs Super

O 'this' é uma variável de referência que é usada para referenciar o objeto atual. O 'super' é uma variável de referência que é usada para referenciar um objeto de superclasse imediato.
Variável de instância
Uma variável de instância de classe atual pode ser referenciada usando isto. Variável de instância da superclasse pode ser referenciada usando super.
Class Method
O método da classe atual pode ser invocado usando isto. O método da superclasse pode ser invocado usando super.
Construtor
O construtor da classe atual pode ser invocado usando this(). Construtor de superclasse pode ser invocado usando super().

Resumo – isso vs super em Java

As palavras-chave 'this' e 'super' são usadas em Java. As palavras-chave não podem ser usadas como variáveis ou qualquer outro nome de identificador. Parecem iguais, mas têm uma diferença. A diferença entre this e super é que super é uma variável de referência que é usada para referenciar o objeto imediato da superclasse enquanto esta é uma variável de referência que referencia o objeto atual.

Baixe o PDF deste vs super em Java

Você pode baixar a versão em PDF deste artigo e usá-lo para fins offline conforme nota de citação. Faça o download da versão em PDF aqui: Diferença entre isso e super em Java

Recomendado: