Diferença Entre Isso E Super Em Java

Índice:

Diferença Entre Isso E Super Em Java
Diferença Entre Isso E Super Em Java

Vídeo: Diferença Entre Isso E Super Em Java

Vídeo: Diferença Entre Isso E Super Em Java
Vídeo: This ou Super, qual usar no Java? 2024, Novembro
Anonim

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.

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

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

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.

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

Recomendado: