Aparece este erro na minha IDE: The interface Comparable cannot be implemented more than once with different arguments: Comparable and Comparable
e no método compareTo pede para remover a annotation @Override.
Classe ContaPupanca
public class ContaPoupanca extends Conta implements Comparable<ContaPoupanca> {
@Override
public int compareTo(ContaPoupanca outra) {
return this.getNumero() - outra.getNumero();
}
}
Só lembrando que reaproveitei a classe Conta de outros cursos, el pode parecer meio torta rsrs, mas funciona... Classe Conta:
public class Conta implements Comparable<Conta>{
private double saldo;
private int agencia;
protected int numero;
private Cliente titular;
private static int total = 0;
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 Conta() {
}
public Conta(double valor) {
this.saldo += valor;
}
public void deposita(double valor) {
this.saldo = this.saldo + valor;
}
public boolean saca(double valor) {
if (this.saldo >= valor) {
this.saldo -= valor;
return true;
} else {
return false;
}
}
public boolean transfere(double valor, Conta destino) {
if (this.saca(valor)) {
destino.deposita(valor);
return true;
} else {
return false;
}
}
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 String toString() {
return "Conta com saldo " + this.saldo;
}
// @Override
// public boolean equals(Object obj) {
// Conta outra = (Conta) obj;
// return this.numero == outra.numero && this.titular.equals(outra.titular);
// }
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
long temp;
temp = Double.doubleToLongBits(saldo);
result = prime * result + (int) (temp ^ (temp >>> 32));
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Conta other = (Conta) obj;
if (Double.doubleToLongBits(saldo) != Double.doubleToLongBits(other.saldo))
return false;
return true;
}
@Override
public int compareTo(Conta outra) {
if(this.saldo < outra.saldo) return -1;
if(this.saldo > outra.saldo) return 1;
return 0;
}
}