Pq a interface Comparable não obriga a implementação de métodos pelas classes que a implementam? O código está compilando sem problemas, mesmo sem a implementação do método compareTo().
/**
*
* @author Felipe
*
*/
public abstract class Conta implements Comparable<Conta> {
protected double saldo;
private int agencia;
private int numero;
private Cliente titular;
private static int total = 0;
/**
* Construtor para inicializar o objeto Conta a partir da agencia e número.
*
* @param agencia
* @param numero
*/
public Conta(int agencia, int numero){
Conta.total++;
//System.out.println("O total de contas é " + Conta.total);
this.agencia = agencia;
this.numero = numero;
//this.saldo = 100;
//System.out.println("Estou criando uma conta " + this.numero);
}
public abstract void deposita(double valor);
/**
* Valor precisa ser maior que o saldo.
*
* @param valor
* @throws SaldoInsuficienteException
*/
public void saca(double valor) throws SaldoInsuficienteException{
if(this.saldo < valor) {
throw new SaldoInsuficienteException("Saldo: " + this.saldo + ", Valor: " + valor);
}
this.saldo -= valor;
}
public void transfere(double valor, Conta destino) throws SaldoInsuficienteException {
this.saca(valor);
destino.deposita(valor);
}
public double getSaldo(){
return this.saldo;
}
public int getNumero(){
return this.numero;
}
public void setNumero(int numero){
if(numero <= 0) {
System.out.println("Nao pode valor menor igual a 0");
return;
}
this.numero = numero;
}
public int getAgencia(){
return this.agencia;
}
public void setAgencia(int agencia){
if(agencia <= 0) {
System.out.println("Nao pode valor menor igual a 0");
return;
}
this.agencia = agencia;
}
public void setTitular(Cliente titular){
this.titular = titular;
}
public Cliente getTitular(){
return this.titular;
}
public static int getTotal(){
return Conta.total;
}
@Override
public boolean equals(Object ref) {
Conta outra = (Conta) ref;
if(this.agencia != outra.agencia) {
return false;
}
if (this.numero != outra.numero) {
return false;
}
return true;
}
@Override
public String toString() {
return "Tituar: " + this.titular.getNome() + ", SAlDO: " + this.saldo;
}
}