logo

Diferença entre this e super em Java

O 'esse' e a ' super' palavras-chave são palavras reservadas usadas em um contexto diferente. Além disso, Java também fornece esse() e super() construtores que são usados ​​no contexto do construtor. Nesta seção, discutiremos o diferenças entre esta e a super palavra-chave e construtor this() e super(), em Java.

super palavra-chave e construtor super()

super palavra-chave

Uma palavra-chave reservada usada para chamar o método ou variável da classe base é conhecida como super palavra-chave. Não podemos usar o super palavra-chave como um identificador . A palavra-chave super não é usada apenas para se referir à instância da classe base, mas também a membros estáticos.

super() Construtor

O super() é usado principalmente para invocar construtores e funções de membros da classe base.

data java para string

Vamos dar um exemplo tanto do super palavra-chave e super() para entender como eles funcionam.

SuperExemplo1.java

 // import required classes and packages package javaTpoint.MicrosoftJava; // create Animal class which is base class of Animal class Animal{ // data member of Animal class String color = 'white'; } // create child class of Animal class Cat extends Animal{ //default constructor Cat() { // data members of the Cat class String color = 'Brown'; System.out.println('The cat is of color '+super.color); // calling parent class data member System.out.println('The cat is of color '+color); } } // create child class for Car class SuperExample1 extendsCat { // default constructor SuperExample1() { // calling base class constructor super(); System.out.println('The eyes of the cat is blue.'); } // main() method start publicstaticvoid main(String[] args) { // call default constructor of the SuperExample1 new SuperExample1(); System.out.println('Inside Main'); } } 

Saída:

isso vs super em Java

No método main(), fizemos uma declaração novo SuperExemplo1() . Ele chama o construtor do SuperExemplo1 aula.

Dentro do construtor, fizemos uma declaração super() que chama o construtor de sua classe pai, ou seja, Gato. No construtor, fizemos três declarações:

recursão java
  1. Inicialize a cor com valor 'Marrom'.
  2. Imprimir membro de dados da classe pai.
  3. Imprime o membro de dados da classe atual.

Quando a segunda instrução é executada, o fluxo do programa salta para a classe Animal para acessar o valor de seus membros de dados. Após acessá-lo, o fluxo volta para o Gato construtor de classe e imprime-o. Depois disso, a última instrução é executada e imprime o valor das variáveis ​​da classe atual.

Após a execução da última instrução do Gato classe, o fluxo volta para o construtor da classe SuperExemplo1 e executa as instruções restantes.

Após concluir a execução do SuperExemplo1() , o fluxo volta ao método main() e executa as instruções restantes.

Nota: Para usar super(), temos que ter certeza de que ela deve ser a primeira instrução no construtor de uma classe. Podemos usá-lo para nos referirmos apenas ao construtor da classe pai.

esta palavra-chave e o construtor this()

esta palavra-chave

É uma palavra-chave reservada em Java usada para se referir ao objeto de classe atual. É uma variável de referência através da qual o método é chamado. Outros usos desta palavra-chave são:

multiplicação de matrizes em c
  • Podemos usá-lo para nos referir à variável de instância da classe atual.
  • Podemos usá-lo para invocar o método da classe atual (implicitamente).
  • Podemos passá-lo como argumento nas chamadas de método e construtor.
  • Também podemos usá-lo para retornar a instância da classe atual do método.

this() Construtor

O construtor é usado para chamar um construtor de outro da mesma classe. Vamos dar um exemplo de ambos esse palavra-chave e esse() para entender como eles funcionam.

myflixr

EsteExemplo1.java

 // import required classes and packages package javaTpoint.MicrosoftJava; // create ThisExample1 class to understand the working of this() and this class ThisExample1 { // initialize instance and static variable int x = 5; staticinty = 10; // default constructor of class ThisExample1 ThisExample1() { // invoking current class constructor this(5); System.out.println('We are insie of the default constructor.'); System.out.println('The value of x = '+x); } ThisExample1(int x) { this.x = x; // override value of the current class instance variable System.out.println('We are inside of the parameterized constructor.'); System.out.println('The value of y = '+y); } publicstaticvoid main(String[] args) { // invoking constructor of the current class new ThisExample1(); System.out.println('Inside Main'); } } 

Saída:

isso vs super em Java

Diferença entre esta e super palavra-chave

A tabela a seguir descreve a principal diferença entre this e super:

esse super
A instância atual da classe é representada por esta palavra-chave. A instância atual da classe pai é representada pela palavra-chave super.
Para chamar o construtor padrão da classe atual, podemos usar esta palavra-chave. Para chamar o construtor padrão da classe pai, podemos usar a palavra-chave super.
Pode ser referido a partir de um contexto estático. Isso significa que pode ser invocado a partir do contexto estático. Não pode ser referido a partir de um contexto estático. Isso significa que não pode ser invocado a partir de um contexto estático.
Podemos usá-lo para acessar apenas os membros de dados e funções de membro da classe atual. Podemos usá-lo para acessar os membros de dados e funções de membro da classe pai.

Diferença entre o construtor this() e super()

esse() super()
O construtor this() refere-se ao objeto da classe atual. O construtor super() refere-se ao objeto da classe pai imediato.
É usado para invocar o método da classe atual. É usado para invocar métodos de classe pai.
Ele pode ser usado em qualquer lugar do construtor parametrizado. É sempre a primeira linha no construtor da classe filha.
É usado para invocar uma versão de superclasse de um método substituído. É usado para invocar uma versão de superclasse de um método substituído.