Ao tentar adicionar as contas a uma lista com
contas.add(c1);
dá erro, [The method add(ContaPoupanca) in the type List is not applicable for the arguments (Conta)] só consigo com:
contas.add((ContaPoupanca) c1);
segue código completo:
package br.com.felipe.banco.sistema;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import br.com.felipe.banco.conta.Conta;
import br.com.felipe.banco.conta.ContaPoupanca;
import br.com.felipe.banco.conta.ValorInvalidoException;
public class TestaOrdenacao {
public static void main(String[] args) throws ValorInvalidoException {
// TODO Auto-generated method stub
Conta c1 = new ContaPoupanca(1);
c1.deposita(300);
Conta c2 = new ContaPoupanca(2);
c2.deposita(100);
Conta c3 = new ContaPoupanca(3);
c3.deposita(500);
Conta c4 = new ContaPoupanca(4);
c4.deposita(50);
List<ContaPoupanca> contas = new ArrayList<>();
contas.add((ContaPoupanca) c1);
contas.add((ContaPoupanca) c3);
contas.add((ContaPoupanca) c2);
contas.add((ContaPoupanca) c4);
Collections.sort(contas);
System.out.println(contas);
}
}
Interface conta
package br.com.felipe.banco.conta;
public abstract class Conta {
protected double saldo;
protected int numero;
private String titular;
Conta(int numero){
this.numero = numero;
}
public int getNumero() {
return numero;
}
public void setNumero(int numero) {
this.numero = numero;
}
public String toString(){
return "Conta número: "+this.numero+"\n";
}
}