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?
Usar método de classe herdada
6 Respostas
Você está querendo saber no Java, né?
Exato.
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();
Quer dizer então que eu poderia chamar antes do public static void main(String args[]), posso colocar o this.funcDaClasseHextendida, e iria funcionar?
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:
Muitíssimo obrigado, a diferença de usar o this eu sabia, mas não conhecia o super.