PDA

View Full Version : [java] Ereditarietà


ceres80
13-07-2006, 18:08
Salve a tutti, ho un problema che nn riesco a risolvere:

Date le classi

public class padre
{
...
public mioMetodo()
{
...
}
}

public class figlio1 extends padre
{
public static String colore ="Rosso";
}

public class figlio1 extends padre
{
public static String colore ="Verde";
}

come posso scrivere il metodo mioMetodo() nella classe padre in modo tale che quando viene chiamato da uno dei figli acceda alla variabile statica del figlio. In patrica il padre non ha e non deve avere la variabile statica colore mentre tutti i figli si ed essendo statica sarò diversa da ogni classe figlio che eredita padre. Il mio problema è che voglio accedere a queste variabili statiche dei figli da un metodo dichiarato nella classe padre e che quindi verrà ereditato da tutti i filgli.
Dovrei fare ad esempio una cosa del genere.

public class padre
{
...
public mioMetodo()
{
System.out.println(colore);
// colore nn è dichiarata e non deve essere dichiarata in padre però so che tutti i figli la dichiareranno
}
}

public class figlio1 extends padre
{
public static String colore ="Rosso";
}

public class figlio2 extends padre
{
public static String colore ="Verde";
}

public class Test
{
public static void main(String[] args)
{
figlio1 f1=new figlio1();
figlio2 f2=new figlio2();
figlio1.mioMetodo() //deve stampare rosso
figlio2.mioMetodo() //deve stampare verde
}
}

grazie

Mr.Paschi!
13-07-2006, 22:15
Ma perchè non la passi come parametro?

andbin
13-07-2006, 22:28
Nelle classi derivate da padre metti un override di mioMetodo che sia "specializzato" per fare quello che vuoi. Ti va bene??

Black imp
14-07-2006, 10:45
Salve a tutti, ho un problema che nn riesco a risolvere:

Date le classi

public class padre
{
...
public mioMetodo()
{
...
}
}

public class figlio1 extends padre
{
public static String colore ="Rosso";
}

public class figlio1 extends padre
{
public static String colore ="Verde";
}

come posso scrivere il metodo mioMetodo() nella classe padre in modo tale che quando viene chiamato da uno dei figli acceda alla variabile statica del figlio. In patrica il padre non ha e non deve avere la variabile statica colore mentre tutti i figli si ed essendo statica sarò diversa da ogni classe figlio che eredita padre. Il mio problema è che voglio accedere a queste variabili statiche dei figli da un metodo dichiarato nella classe padre e che quindi verrà ereditato da tutti i filgli.
Dovrei fare ad esempio una cosa del genere.

public class padre
{
...
public mioMetodo()
{
System.out.println(colore);
// colore nn è dichiarata e non deve essere dichiarata in padre però so che tutti i figli la dichiareranno
}
}

public class figlio1 extends padre
{
public static String colore ="Rosso";
}

public class figlio2 extends padre
{
public static String colore ="Verde";
}

public class Test
{
public static void main(String[] args)
{
figlio1 f1=new figlio1();
figlio2 f2=new figlio2();
figlio1.mioMetodo() //deve stampare rosso
figlio2.mioMetodo() //deve stampare verde
}
}

grazie



classico esempio di ereditarietà e funzioni virtuali. il padre deve avere una funzione virtuale che poi i figli definiranno.