Usar método de classe herdada

6 respostas
A

Pessoal, extendendo uma classe, como faço para acessar um método ou uma propriedade. No PHP usamos o $this->, tentei this.func no javascript e deu erro no cmd, onde estou testando, me parece que o this só pode chamar coisas estáticas. E aí como faço?

6 Respostas

C

Você está querendo saber no Java, né?

A

Exato.

W

se vc está utilizando o this dentro de um método estático ( o main, por exemplo) não irá funcionar. Se for a partir de um outro método/contrutor, vc pode utilizar o this.metodo(), ou simplismente chamar-lo: metodo();

A

Quer dizer então que eu poderia chamar antes do public static void main(String args[]), posso colocar o this.funcDaClasseHextendida, e iria funcionar?

D

Boa tarde a todos.

Pelo teor da pergunta no tópico inicial (Usar método de classe herdada), então há diferenças básicas entre usar o próprio método e o da classe herdada.

Quando voce quer se referir a própria classe, então a sintaxe é o “this” (este, esta) em inglês, na verdade ele quer dizer com o this é “esta classe”.

Agora quando voce tem uma classe que herda de outra classe, então a sintaxe correta é o “super” de super classe, ou seja a classe ancestral. vamos ao exemplo:

public class Pessoa {
       
          private String nome;

          public void setNome(String nome) {
             this.nome = nome;   // Aqui o this refere-se a classe Pessoa (Ela mesma).
          }
  }

   // Classe herdada de Pessoa
  public class Dunga extends Pessoa {

        private String selecao;

        public void setSelecao(String selecao);
            // Aqui a sintaxe super refere-se a classe Pessoa da qual a classe Dunga herda.
            super.setNome("Carlos Caetano Bledorn Verri") // Nome real do Dunga
            this.selecao = selecao  // Aqui o this refere-se a classe Dunga (Ela mesma)
        }
   }

Agora dentro de métodos estáticos, voce não pode utilizar o “this” e nem tão pouco o “super”, isto porque os métodos estáticos não precisam de instâncias para serem executados, e dentro de métodos estáticos voce tem que fazer referência ao nome da classe para usar o método ao invés de this.

Voce não precisa utilizar a sintaxe super a toda hora para invocar um método da classe herdada, voce poderia por exemplo executar o método setNome(), a não ser quando voce quer sobreescrever o próprio metodo é executar o código do método herdado. assim:

public class Pessoa {

          private String nome;

          public void setNome(String nome) {
             this.nome = nome;   // Aqui o this refere-se a classe Pessoa (Ela mesma).
          }


          public void printNome(){
             System.out.println("Meu nome é");
          }
     } 

     public class Dunga extends Pessoa {
 
         public void printNome() {  // Método sobreescrito
             super.printNome();   // Executando o método printNome da super classe (Classe Ancestral).
             setNome("Carlos Caetano Bledorn Verri") ;
             System.out.println("Carlos Caetano Bledorn Verri") ;
         }
  }

Execute o código e veja a diferença:

A

Muitíssimo obrigado, a diferença de usar o this eu sabia, mas não conhecia o super.

Criado 1 de junho de 2010
Ultima resposta 1 de jun. de 2010
Respostas 6
Participantes 4