/* package whatever; // don't place package name! */
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main
(String[] args
) { List<Conta> list = new ArrayList<Conta>();
Conta cc1 = new ContaCorrente();
cc1.setNumero(1);
Conta cc2 = new ContaCorrente();
cc2.setNumero(20);
Conta cc3 = new ContaCorrente();
cc3.setNumero(25);
list.add(cc1);
list.add(cc2);
list.add(cc3);
System.
out.
println("------------");
}
static abstract class Conta implements Comparable<Conta> {
protected double saldo;
protected int numero;
private int agencia;
public double getSaldo() {
return saldo;
}
public void deposita
(double valor
) throws Exception { if (valor > 0) {
this.saldo += valor;
} else {
}
System.
out.
println("Fim do deposita"); }
public void saca(double valor) {
this.saldo -= valor;
}
public abstract void atualiza(double taxaSelic);
public int getNumero() {
return numero;
}
public void setNumero(int numero) {
this.numero = numero;
}
public int getAgencia() {
return agencia;
}
public void setAgencia(int agencia) {
this.agencia = agencia;
}
return nome;
}
public void setNome
(String nome
) { this.nome = nome;
}
@Override
public boolean equals
(Object obj
) { if (!(obj instanceof Conta)){
return false;
}
Conta c = (Conta)obj;
return this.numero == c.numero || this.nome.equals(c.nome);
}
@Override
return "Conta de número " + this.numero;
}
}
static class ContaCorrente extends Conta {
@Override
public void atualiza(double taxaSelic) {
this.saldo += (this.saldo * taxaSelic) * 2;
}
@Override
public int compareTo(Conta o) {
System.
out.
println("Vai ordenar: "+this.
numero+" com "+o.
numero); if(this.numero > o.numero){
return -1;
}
if (this.numero < o.numero) {
return 1;
}
return 0;
}
}
}