Tipo di una domanda noob, questo, ma non riesco a capirlo."override" membro super classe in sottoclasse java
Questo è animal.java. Voglio che sia una superclasse per tutte le sottoclassi degli animali. È nello stesso pacchetto di tutte le sottoclassi.
public class Animal {
protected static String call = "Animals make noises, but do not have a default noise, so we're just printing this instead.";
public static void sound()
{
System.out.println(call);
}
}
Questo è cow.java
class Cow extends Animal {
call = "moo";
}
Evidentemente, questo non viene eseguito. Ma voglio essere in grado di eseguire Cow.sound() e fare in modo che l'output legga "moo". Voglio anche essere in grado di creare più classi che sovrascrivono la 'chiamata' con la propria stringa. Cosa dovrei fare invece?
Utilizzare subito la variabile di classe classname.variable. Perché i metodi statici e le variabili non possono essere sovrascritti. Quindi se vuoi cambiare la variabile devi chiamare Animal.call = –
Shriram
provare qualcosa come 'void sound (String call) {-----}' – Uppicharla
Perché non devi semplicemente sovrascrivere il metodo sound invece di provare ridefinire il tuo attributo statico? – christophetd