Associação de classes com herança

Bom dia galera

Estou desenvolvendo o trabalho da disciplina e me deparei com um problema…
Tenho uma classe fornecedor que tem uma lista de telefones, só que a classe telefone é superclasse da classe ramal. Esse fornecedor pode ter na sua lista de telefones, telefones simples e telefones com ramal, elaborei dessa forma teria alguma outra solução?

public class Fornecedor extends EntidadeDominio {
    List <Telefone> telefones; //esse List usa generics Telefone
    List <Ramal> ramais;        //esse List usa generics Ramal
    List todostelefones = new ArrayList();
    todostelefones.add(ramais);
    todostelefones.add(telefones);
}
public class Telefone extends EntidadeDominio{
    private Fornecedor fornecedor;
}
public class Ramal extends Telefone{
    private String numero;
    private String descrição;
}

Essa classe Fornecedor está com erro de sintaxe, pois vc tem códigos que deviam estar dentro de um método.

Sobre o problema do telefone, vc pode fazer assim:

Fornecedor

public class Fornecedor extends EntidadeDominio {
	private List<Telefone> telefones = new ArrayList<>();

	public void addTelefone(Telefone telefone) {
		telefone.setFornecedor(this);
		telefones.add(telefone);
	}
}

Telefone

public class Telefone extends EntidadeDominio {
	private String numero;
	private Fornecedor fornecedor;
	
	public Telefone(String numero) {
		this.numero = numero;
	}

	public void setFornecedor(Fornecedor fornecedor) {
		this.fornecedor = fornecedor;
	}
}

Ramal

public class Ramal extends Telefone {
	
	private String descricao;
	
	public Ramal(String numero, String descricao) {
		super(numero);
		this.descricao = descricao;
	}
}

Main

public static void main(String[] args) {
	var fornecedor = new Fornecedor();
	var ramal = new Ramal("1234", "Escritório");
	
	fornecedor.addTelefone(ramal);
}

OBS.: Talvez vc ache estranho, mas o uso do var no main é pq o código foi feito com a JDK11

1 curtida

foi mal esqueci de mencionar que a classe Telefone tem DDI, DDD e numero, o numero da classe ramal se refere ao número do ramal… por exemplo… Telefone: +55 11 1234-5678 ramal 123 Vendedor Lucas.

Certo. De qualquer forma, o exemplo que fiz, deve resolver o problema. Vc deve conseguir adaptar.