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:
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
- Inicialize a cor com valor 'Marrom'.
- Imprimir membro de dados da classe pai.
- 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:
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. |