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");
}
}
}
}