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.
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.
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.
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