Olá pessoal, estou estudando e gostaria de tirar algumas dúvidas.
Minha principal duvida é sobre diferenças entre o conceito de método abstrato e o método nãoabstrato (concreto)? E faz sentido eu definir um atributo como abstrato?
Quem puder me esclarecer, ficarei muito agradecido!
Um método abstrado não possui corpo e obrigatóriamente tem que ser implementado pela classe que extenda a classe onde ele foi declarado.
Por exemplo:
package guj;
public abstract class Conta {
public Double saldo;
public abstract void deposita(Double valor);
public void getSaldo(){
System.out.println("Classe Conta");
}
}
package guj;
public class ContaCorrente extends Conta {
public void deposita(Double valor){
saldo += valor * 0.97;
}
public void getSaldo(){
System.out.println("Classe ContaCorrente");
}
}
package guj;
public class ContaPoupança extends Conta {
public void deposita(Double valor){
saldo += valor;
}
}
O método abstrato deposita obrigatoriamente tem que ser implementando nas classes filhas de Conta.
Já o método concreto getSaldo, pode ser ou não redefinido nas classes filhas.
[quote=Zeed01]Um método abstrado não possui corpo e obrigatóriamente tem que ser implementado pela classe que extenda a classe onde ele foi declarado.
Por exemplo:
package guj;
public abstract class Conta {
public Double saldo;
public abstract void deposita(Double valor);
public void getSaldo(){
System.out.println("Classe Conta");
}
}
package guj;
public class ContaCorrente extends Conta {
public void deposita(Double valor){
saldo += valor * 0.97;
}
public void getSaldo(){
System.out.println("Classe ContaCorrente");
}
}
package guj;
public class ContaPoupança extends Conta {
public void deposita(Double valor){
saldo += valor;
}
}
O método abstrato deposita obrigatoriamente tem que ser implementando nas classes filhas de Conta.
Já o método concreto getSaldo, pode ser ou não redefinido nas classes filhas.
[]s
[/quote]
Zeed… sua afirmação não esta correta…
a PRIMEIRA classe CONCRETA derivada de conta será obrigada a fornecer uma implementação para os metodos abstratos.
Se uma classe extender Conta, mas também for abstrata, essa classe nao precisa implementar os metodos abstratos, pode passar isso pra frente. Mas a primeira classe concreta é obrigada a reescrever os abstratos.
Então a afirmação correta seria:
“Um método abstrado não possui corpo e obrigatoriamente tem que ser implementado pela classe primeira classe concreta que extenda a classe onde ele foi declarado”