Dúvidas sobre implementação de TableModel próprio

Olá, estou estudando o TableModel para não usar mais o DefaultTableModel…
Me deparei com uma duvida:
Pelo que entendi o método getColumnClass que eu dou Override do AbstractTableModel, serve pra dizer pra tabela como ela deve representar o valor de cada coluna, por ex:

@Override public Class getColumnClass(int coluna) { switch (coluna) { case (0): return Integer.class; case (1): return String.class; case (2): return Date.class; case (3): return Socio.class; case (4): return Boolean.class; default: throw new IndexOutOfBoundsException("columnIndex out of bounds"); } }
Esse modelo de tabela possui colunas do tipo int, String, Date, um objeto Socio e um boolean.
Reparei que pro sócio ser representado, eu devo sobreescrever o toString na calsse sócio, apresentando o nome dele por ex.
Mas e quanto a esse Date? Quando eu faço os testes e adiciono um date, é me mostrado o valor 12/12/1991 por ex, mas o método toString da classe Date NÃO TEM essa representação…

Gostaria de saber como funciona essa prepresentação de valores, até pra mim personalizar, por ex. quando quiser mostrar a data com hora nesse modelo.

Mais uma coisa, tentei fazer o método isCellEditable retornar sempre true mas mesmo assim eu não consigo editar as células… Como devo fazer?

Dá uma olhada nesse link: http://markytechs.wordpress.com/2009/05/29/objecttablemodel/