Erro ao exibir Fila

Boa tarde
Estou treinando exercicos de fila dinâmica, estou conseguindo armazenar, mas na hora de exibir esta me mostrando endereço de memória no lugar dos dados, na minha fila vou armazenar dados do objeto aluno, vou postar o código se alguém souber onde estou errando e como corrigir fico grato:

Classe Aluno, observem que nessa classe tenho um método final que retorna os dados que preciso é o getDados:

package academico;

import java.util.Arrays;
import javax.swing.JOptionPane;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

public class Aluno {

    private String rgm;
    private String nome;
    private String sobrenome;
    private String campus;
    private String turma;
    private int qtdDisiciplina = 0;
    private List<Disciplina> disciplinas = new ArrayList<Disciplina>();  
     
    public void setNome(String n){
        this.nome = n;
    }
    public void setRGM(String rgm){
        this.rgm = rgm;
    }
    public void setSobreNome(String sn){
        this.sobrenome = sn;
    }
    public void setCampus(String c){
        this.campus = c;
    }
    public void setTurma(String t){
        this.turma = t;
    }

    public String getNome(){
        return this.nome;
    }

    public String getRGM(){
        return this.rgm;
    }
    public String getSobreNome(){
        return this.sobrenome;
    }
    
    public String getCampus(){
        return this.campus;
    }
    public String getTurma(){
        return this.turma;
    }

    public void setDisciplina(Disciplina disciplina){
        disciplinas.add(disciplina);  
    }
    public Collection<Disciplina> getDisciplinas() { //não importa a coleção interna  
        return Collections.unmodifiableList(disciplinas); //evita que alguém de fora altere a lista, só essa classe pode mexer  
    }  
    
    public String getDados()
    {
      
        return "\nRGM: " + this.getRGM() + "\nNome: " + this.getNome() +  "\nSobre Nome: " + this.getSobreNome() + "\nCampus: " + this.getCampus() + "\nTurma: " + this.getTurma() + "\nDisciplinas: " + this.getDisciplinas()  + "\n\n";
    }  
    
}

Classe node:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Fila;

import academico.Aluno;

public class Node {
    private Aluno dado; //Dado a ser armazenado no nó
    private Node prox; //referencia para o proximo no

    public Object getDado() { return dado; }
    public void setDado(Aluno novo_dado) { dado = novo_dado; }
    public Node getProx() { return prox; }
    public void setProx(Node novo_prox) { prox = novo_prox; }
}

Classe fila:

package Fila;
import academico.Aluno;
import javax.swing.*;
public class FilaDin {
   
    Node comeco;
    Node fim;
    int total;

    public FilaDin()
    {
        comeco = null;
        fim = null;
        total = 0;
     }

    public boolean qIsEmpty(){
        return(total ==0);
    }

    public void enqueue(Aluno x)
    {
        Node novo = new Node();
        novo.setDado(x);
        novo.setProx(null);
        if(qIsEmpty())
        {
            comeco = novo;
            fim = comeco;
        }
        else
        {
            fim.setProx(novo);
            fim = novo;
        }
        total++;
    }

    public Object dequeue()
    {
        Object resp = null;
        if(!qIsEmpty())
        {
            resp = comeco.getDado();
            comeco = comeco.getProx();
            total --;
            return resp;
        }
        return resp;
    }
    public String qPrint()
    {
        String saida = "";
        if(qIsEmpty())
            JOptionPane.showMessageDialog(null, "Fila esta vazia!");
        else
        {
            Node aux;
            
            aux = comeco;
            while(aux!=null)
            {
                saida += aux.getDado().toString() + "\n";
                aux = aux.getProx();
            }
            
        }
        return saida;
    }

     public int count()
     {
            int count = 0;
            if(!qIsEmpty())
            {
                Node aux = comeco;
                while(aux != null)
                {
                    count++;
                    aux = aux.getProx();
                }
            }
            return count;
        }

     public boolean search(Object x)
     {
        boolean find = false;
        if(!qIsEmpty())
        {
            Node aux = comeco;
            while(aux != null)
            {
                find = aux.getDado().equals(x) ? true : false;
                aux = aux.getProx();
            }
        }
        return find;
     }
}

O resultado que esta me mostrando na tela é :
academico.Aluno@2bbd86
Como arrumar?

Não olhei muito o seu código, você está mandando imprimir o objeto Aluno ou seus atributos?

Você está dando um toString() em um objeto, por isso esse retorno…
Invoque o método getDados() do seu objeto Aluno daí você terá o valor dos atributos dele ^^

Valeu galera vacilei mesmo, na classe Node fiz a alteração correta.
Eu estava exibindo na função public Object getDado() { return dado;} o objeto e não os dados, então deicei assim: public Object getDado() { return dado.getDados(); }

Essa é a forma certa ou existe alguma melhor?

Se você deseja imprimir todos os atributos de um objeto você pode sobrescrever o método toString() (seria mais ou menos o que você fez mas você criou outro método…o getDados) na classe do mesmo…ou pode imprimir um por um utilizando seus getters…

Valeu pela dica

Denada cara…
Se o seu problema foi resolvido acrescente [Resolvido] ao título do tópico

Ok valeu