Tu continui a confondere il valore di ritorno di una funzione con ciò che quella funzione stampa a video.

Tu hai dichiarato la funzione toString() in modo tale da ritornare un valore, non importa a nessuno che lo stampi anche a video!

In quel metodo manca l'istruzione return che permette a una funzione di restituire un valore... a chi lo restituisce? Lo restituisce alla procedura chiamante, la quale lo salverà in una variabile o lo utilizzerà in qualche modo.

Secondo me tu non vuoi restituire un valore, ma vuoi solamente stamparlo in output. Per far questo devi dichiarare il metodo toString() come void e non come tipo String.
codice:
public void toString() {
   ...
}
Dichiarandolo come l'hai dichiarato tu servirebbe per fornire un risultato a qualche altra funzione che lo richiami, ad esempio questo:
codice:
public String ritorna() {
   return "Ciao mondo!";
}

...

video.println( ritorna() );
Io ti consiglio di studiarti bene le basi di questo linguaggio, e anche darti un'occhiata alla programmazione imperativa, perchè sembra che tu abbia delle grosse lacune... (è solo un consiglio, non prenderla a male)


Ciao.