Diferença entre isso e super em Java

Diferença chave - essa 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 identificador. Java suporta Programação Orientada a Objetos (OOP). O programa ou software pode ser modelado usando objetos. Objetos são insaciados usando classes. Um pilar da OOP é a herança. Ele fornece reutilização de código. As classes que já existem são superclasses e as classes derivadas são subclasses. A super palavra-chave 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. o diferença chave entre isso e super é 'this 'é uma variável de referência usada para referenciar o objeto atual enquanto 'super' é uma variável de referência usada para referir o objeto imediato da superclasse. 

CONTEÚDO

1. Visão geral e principais diferenças
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 - este vs super em Java em forma de tabela
6. Resumo

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 ​​que pertencem aos 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; não inicializará as variáveis ​​da instância porque o Construtor já possui id e nome. Não há valores para variáveis ​​de instância. Portanto, imprimi-los exibirá nulo. Ao usar isso, refere-se ao objeto atual. Portanto, fornecer id e nome ao construtor pode definir as variáveis ​​da instância.

A palavra-chave 'this' pode ser usada para chamar o método de classe atual. Consulte o programa java fornecido.

classe pública ThisDemo

public static void main (String [] args)

Myclass myClass = new Myclass ();

myClass.B ();

classe Myclass

vazio público A ()

System.out.println ("A");

vazio público 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, imprimirá B, A como saída. No método B, após a impressão de B, há uma declaração como this.A (). Usando isso, o método de classe atual foi chamado.

Também é possível usar essa palavra-chave para chamar o construtor de classe atual. Consulte o programa fornecido.

classe pública ThisDemo

public static void main (String [] args)

A obj = novo A (5);

classe A

público A ()

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

público A (int x)

esta();

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, há uma declaração como esta (); Ele chamará o construtor de classe atual que é A ().

O que é super em Java?

A palavra-chave 'super' está relacionada à herança. 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 ou subclasse filho.

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

Suponha que haja 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

exibição pública nula ()

System.out.println ("A");

a classe pública B estende A

exibição pública nula ()

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 é substituída pelo método de exibição da subclasse B. Se o programador quiser chamar o método de exibição na classe A, ele poderá usar a super palavra-chave. 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 o valor 10. A classe B estende A e tem uma variável chamada número com o valor 20. Geralmente, ao criar um objeto do tipo B e chamar o método de exibição, deve-se 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 tem o construtor B (). A classe B estende a classe A. Ao criar um objeto do tipo B, ele imprimirá A, B como a saída. O construtor B () possui super (). Portanto, primeiro o construtor A é chamado e depois vai para B. Mesmo que super () não seja gravado, por padrão, o construtor pai é chamado.

O super usando o método é o seguinte.

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

De acordo com o programa acima, a classe A possui um método de exibição. Classe B também tem 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. Depois imprime "B".

Qual é a semelhança entre isso e super?

  • Ambas são palavras-chave na programação Java.

Qual é a diferença entre this e super?

This vs Super

O 'this' é uma variável de referência usada para referenciar o objeto atual. O 'super' é uma variável de referência usada para referenciar um objeto de superclasse imediato.
 Variável de instância
Uma variável de instância de classe atual pode ser referida usando este. A variável de instância da superclasse pode ser referida usando super.
Método de classe
O método de classe atual pode ser chamado usando este. O método da superclasse pode ser chamado usando super.
 Construtor
O construtor de classe atual pode ser chamado usando this (). O construtor da superclasse pode ser chamado 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 identificador. Eles parecem ser os mesmos, mas eles têm uma diferença. A diferença entre este e super é que super é uma variável de referência usada para referir o objeto imediato da superclasse enquanto esta é uma variável de referência que refere o objeto atual.

Faça o download do PDF deste vs super em Java

Você pode fazer o download da versão em PDF deste artigo e usá-la 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

Referência:

1.This () e super palavra-chave em java e seu objetivo com um pequeno exemplo, Atoz conhecimento, 31 de janeiro de 2015. Disponível aqui 
2. "Esta palavra-chave em java - ponto java". Disponivel aqui  
3.tutorialspoint.com. "Herança Java". The Point, disponível aqui