Diferença chave - este 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 oferece suporte a Programação Orientada a Objetos (OOP). O programa ou software pode ser modelado usando objetos. Os objetos são isolados usando classes. Um dos pilares da OOP é a herança. Ele fornece capacidade de 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 se referir a um objeto da superclasse. Existem vários objetos no sistema. A palavra-chave 'this' é usada para se referir a um objeto atual. A principal diferença entre this e super é que 'this' é uma variável de referência usada para referir-se ao objeto atual, enquanto 'super' é uma variável de referência usada para referir-se ao objeto imediato da superclasse.
CONTEÚDO
1. Visão geral e diferença-chave
2. O que é isso em Java
3. O que é super em Java
4. Semelhanças entre isso e super em Java
5. Comparação lado a lado - isso vs super em Java na forma tabular
6. Resumo
O que é isso em Java?
A palavra-chave 'this' é usada para se referir a 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. Eles 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. 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á tem id e nome. Não há valores para variáveis de instância. Portanto, imprimi-los exibirá nulo. 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) {
Myclass myClass = new Myclass ();
myClass. B ();
}
}
class Myclass {
public void A () {
System.out.println (“A”);
}
public void B () {
System.out.prinltn (“B”);
this. A ();
}
}
A classe Myclass contém dois métodos. Eles são os métodos 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, depois de imprimir B, há uma declaração como this. A (). Usando isso, o método de classe atual foi chamado.
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 = novo A (5);
}
}
classe A{
public A () {
System.out.println (“Construtor A”);
}
public A (int x) {
isto();
System.out.println (“Construtor parametrizado A”);
}
}
De acordo com o programa acima, a classe A possui um construtor padrão e um construtor parametrizado. Ao criar um objeto de A, o construtor parametrizado é chamado. No construtor parametrizado, existe uma instrução como esta (); 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. Ele 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 ou subclasse filha.
O 'super' é uma variável de referência usada para referir-se ao objeto de classe pai imediato. A palavra-chave super pode referir-se à variável de instância da classe pai imediata ou invocar o método da classe pai imediato. O super () é usado para invocar o construtor da classe pai imediata.
Suponha que haja duas classes como A e B. A classe A é a superclasse e a classe B é a subclasse. As classes A e B possuem método de exibição.
public class A {
public void display () {
System.out.println (“A”);
}
}
public class B extends A {
public void display () {
System.out.println (“B”);
}
}
Ao criar um objeto do tipo B e chamar a exibição do método, ele fornecerá a saída B. A classe A possui o método de exibição, mas é sobrescrito pelo método de exibição da subclasse B. Se o programador deseja chamar o método de exibição na classe A, ele pode usar a palavra-chave super. Consulte o programa Java fornecido.
Figura 02: Programa Java usando superpalavra-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 de exibição deve fornecer o número em a subclasse porque o valor da superclasse é substituído pela nova classe. Usando 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.
public class Main {
public static void main (String args) {
B obj = novo B ();
}
}
classe A{
UMA(){
System.out.println (“A”);
}
}
classe B estende A {
B () {
super();
System.out.println (“B”);
}
}
De acordo com o programa acima, a classe A possui um construtor A (). A classe B possui o construtor B (). A classe B estende a classe A. Ao criar um objeto do tipo B, ela imprimirá A, B como saída. O construtor B () tem super (). Portanto, primeiro o construtor A é chamado e depois vai para B. Mesmo que super () não seja escrito, por padrão, o construtor pai é chamado.
O super uso do método é o seguinte.
Figura 03: programa Java que invoca o método da superclasse
De acordo com o programa acima, a classe A possui método de exibição. A classe B também possui 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 isso e super?
Ambos são palavras-chave na programação Java
Qual é a diferença entre isso e super?
Artigo Diff meio antes da tabela
Este vs Super |
|
O 'this' é uma variável de referência que é usada para referir-se ao objeto atual. | O 'super' é uma variável de referência usada para se referir a um objeto de superclasse imediato. |
Variável de instância | |
Uma variável de instância de classe atual pode ser referenciada usando this. | A variável de instância da superclasse pode ser referenciada usando super. |
Método de Classe | |
O método de classe atual pode ser invocado usando isso. | O método da superclasse pode ser invocado usando super. |
Construtor | |
O construtor da classe atual pode ser invocado usando this (). | O construtor da superclasse pode ser invocado usando super (). |
Resumo - este 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. Eles parecem ser iguais, mas têm uma diferença. A diferença entre this e super é que super é uma variável de referência usada para referir-se ao objeto imediato da superclasse, enquanto esta é uma variável de referência que se refere ao objeto atual.
Baixe o PDF deste vs super em Java
Você pode baixar a versão PDF deste artigo e usá-la para fins off-line de acordo com a nota de citação. Baixe a versão em PDF aqui: Diferença entre este e o super em Java