[Resolvido] Interface com toString

Pessoal eu tenho um problema aqui que é o seguinte eu preciso sobrescrever um método chamado “print”.
Através de um interface que faça uso do toString das minhas entidades.

A minha duvida é como eu faria isso ?
Eu sei sobrescrever o método toString mas não sei como usar nesse caso, estou confuso.

Alguém poderia me esclarecer, dês de já valeu, muito obrigado.

Melhor dar um exemplo para você olhar com atenção e entender.

class Carro {
    public Carro (String modelo) { this.modelo = modelo; }
    public String modelo;
    public String toString() { return modelo; }
}
class Aviao {
    public Aviao (String marca) { this.marca = marca; }
    public String marca;
    public String toString() { return marca; }
}
class Pai {
    public void print() {
        System.out.println ("O pai tem um carro " + carro.toString());
    }
    public Carro getCarro() { return carro; }
    private Carro carro = new Carro ("Gol");
}
class Filho extends Pai {
    @Override
    public void print() {
        System.out.println ("O filho tem um carro " + getCarro().toString() + " e um aviao " + aviao.toString());
    }
    public Aviao getAviao() { return aviao; }
    private Aviao aviao = new Aviao ("Embraer");
}
  1. Eu sobreescrevi o método “print” na classe filha
  2. Usei o toString das entidades (carro e avião).
    Não sei se o exercício (isso é um exercício de escola, não) quer que “através de um interface” use explicitamente o conceito de interface. Pelo que entendi basta apenas usar as coisas, se o exercício pede também uma interface, crie uma que as classes tenham de implementar.

O meu problema é quase isso, mais voi mostrar aonde estou empacando.

public class Acervo implements Prints{
      private String nome;
      private String assunto;

@Override
	public String toString() {
		// TODO Auto-generated method stub
		return "Nome:"+getNome()+"\nAssunto:"+getAssunto();
	}
@Override
	public void print() {
		// TODO Auto-generated method stub
		
	}
//getters and setters ..............
}
      
public class Livro extends Acervo{
	private int qtdCaracteres;
	private int qtdTabulacao;

 @Override
        public String toString() {
		// TODO Auto-generated method stub
		return super.toString()+"\nQuantidade de Caracteres:"+getQtdCaracteres()
		         +"\nQuantidade de Tabulação:"+getQtdTabulacao();
      }
@Override
	public void print() {
		// TODO Auto-generated method stub
		
	}
 //getters and setters..........
}



public interface Prints {
        public void print();
}
public class Printer {
	public void imprimir(List<Acervo> acervos){
		for (Acervo acervo : acervos) {
			acervo.print();
		}
	}	
}
//Eu tenho uma classe que guarda uma List<Acervo> não vou colocar se não vai ficar muito extenso.

O problema é: Todas as minhas entidades devem sobrescrever o método print através de um interface que fará uso do toString.
Mas como eu uso o metodo print nesse caso, uma vez que eu “acho” que o toString faz uma referencia ao objeto.
No exemplo acima o colega instancio as classes, no meu caso é diferente.

Bom pessoal vim aqui postar minha resposta, achei bastante interessante o exercício, pois deixa bem claro o conceito de Polimorfismo, OO e se realmente você está aprendendo java ou apenas decorando código.
Muito obrigado quem pode compartilhar o conhecimento foi de grande ajuda.
Vou postar aqui como foi que resolvi meu problema.

//No método que sobrescrevia o print da interface ficou assim.
@Override  
    public void print() {  
        // TODO Auto-generated method stub  
         System.out.println(this);
    }
//Esta é a classe que imprimia a galera
public class Printer {  
    public void imprimir(List<Acervo> acervos){  
        for (Acervo acervo : acervos) {  
            acervo.print();  
        }  
    }     
}  

A sacada é o seguinte, vamos aos conceitos.
toString é um método que retorna uma representação do OBJETO em questão em forma de String.
E o this se referencia aquele objeto da classe. Já que foi sobrescrito o toString, o objeto vai “sair todo bonitinho”.
Se eu estiver errado em alguma coisa por favor me corrijam. :smiley: