Ciao ho un problema con le classi astratte; se definiscono dei metodi astratti,essi devono essere implementati dalle sottoclassi.Fonoscono quindi lo scheletro per le classi figlie.E qui sta il problema.
Devo costuire un programma che costruisca una torre,formata da blocchi e da blocchi numerati:
codice:
abstract class Blocco implements Comparable{
String colore;
Blocco(String colore){
this.colore=colore;
}
public String getColore(){
return colore;
}
abstract boolean npuoStareSopra(Blocco b);
abstract int compareTo(Blocco y);
}
Fin qui tutto bene e tutto è compilato correttamente. Poi la sua sottoclasse:
codice:
class BloccoNumerato extends Blocco {
String colore;
int numero;
BloccoNumerato(String colore,int numero){
super(colore);
this.numero=numero;
}
public boolean npuoStareSopra(Blocco b){
if(b!=null && b.colore.equals(colore)){
return true;
}else
return false;
}
public int compareTo(Blocco y){
int color=colore.compareTo(y.colore);
return color;
}
}
Il compilatore mi segnala un errore alla prima riga della sottoclasse BloccoNumerato di tipo:
BloccoNumerato is not abstract and does not override abstract method compareTo(java.lang.Object) in java.lang.Comparable
class BloccoNumerato extends Blocco {
Adesso mi chiedo...ho implementato tutti i metodi della classe astratta Blocco,Perchè mi dà errore?Poi se nella classe Blocco, inserisco la seguente dichiarazione :abstract class Blocco implements Comparable<Blocco>,il compilatore mi dà errore perche?