Ciao!
Nonostante io abbia letto il tutorial e altri esempi, non riesco proprio a capire come funziona il comando super

Ho capito che utilizzandolo si richiama il metodo precedentemente definito in un'altra classe, che nell'attuale classe è stato ridefinito. Ho provato a scrivere un pezzo di codice in cui utilizzo il metodo read() della classe Reader, però non funziona!


Sto cercando di leggere caratteri dalla tastiera e memorizzarli in una stringa che comparo poi con la parola "ciao", se nella stringa non scrivo ciao la classe ridefinita read() mi rimanda a super.read(), che in realtà dovrebbe leggermi il carattere in ingresso. Invece viene segnalato questo errore:
codice:
Exception in thread "main" java.lang.NoSuchMethodError: main
Cosa c'è che non va?

Questo è il codice:

codice:
import java.io.*;
import static java.lang.System.in;	
import java.lang.*;


public abstract class Prova_super extends Reader {


public boolean match(String str) throws IOException {

boolean a;


StringBuilder stringa = new StringBuilder();
char ch;

    Reader in = new InputStreamReader(System.in);

      do{
      stringa.append((char)in.read());
       if(str.equals(stringa))
        a=true;
       else{ 
        a=false;
     }
}
      while(in.ready());


return a;

}



public int read() throws IOException {

    if (match("ciao"))
	  return VAR;
    if (match("buongiorno"))
    return super.read();  

}

  public static final int VAR = Integer.MIN_VALUE;

  public void main(String[] args) throws IOException { 

    int ch;

      while ((ch = read()) != 13) {
        switch (ch) {
          case VAR:
             System.out.print("ciaoo");
            break;
          default:
            System.out.print("buongiorno");
        }
      }


   }

}