PDA

Visualizza la versione completa : [JAVA] Ereditarietà metodi


HARDCORE3000
13-10-2005, 01:04
Scusate ho un piccolo problema, praticamente ho una classe A che contiene un metodo che riceve una Stringa e mi fà un APPEND in una JTextArea. Questa classe A estende una classe B che assua volta B estende un altra classe C. Il problema e questo; se io dalla classe C richiamo il metodo setArea()"IL METODO CHE Fà L'APPEND" io non visualizzo niente. Penso che la classe C non vede i metodi della superClasse A. Qualcuno sà dirmi come posso fare? Grazie. :ciauz:

Gil Mour
13-10-2005, 01:12
Puoi postare un po di codice?
Cosi è difficile capire dove può essere il problema

HARDCORE3000
13-10-2005, 01:23
CLASSE A
public class Scanner extends JFrame{

JTextArea area=new JTextArea(5,10");
}
public void setArea(String a){
area.append(a);
}
------------------------------

Classe b:

public class pippo extends Scanner{
super();

}

Classe c:
class Threadscannerip extends pippo{
setArea("ciao");
}
-------------------------
Se nella classe C chiamo il metodo della classe A (SUPERCLASSE) non visualizzo niente :( sapete dirmi come risolvere questo problema? :master:

LeleFT
13-10-2005, 08:37
Credo che avere un po' più di codice aiuterebbe... così com'è non si capisce dov'è il problema.
Non visualizzi niente in che senso? Se non visualizzi la finestra è perchè manca un setVisible() nella classe A, se non visualizzi la JTextArea è perchè probabilmente non l'hai aggiunta alla finestra sempre nella classe A...


Ciao. :ciauz:

Gil Mour
13-10-2005, 10:26
In effetti, intanto capiamo una cosa: se richiami il metodo direttamente dalla classe Scanner, questo funziona?

HARDCORE3000
13-10-2005, 11:45
Purtroppo non posso postare il codice delle 3 classi perche sarebbe molto lungo. Come vi ho detto nella classe "A" ho una JTextArea ed un metodo con il nome ("SetName") con il quale gli passo una Stringa e fà l'append nella JTextArea. Spero che fin qui abbiate capito.

Questa classe ("A") estende una classe ("B") e b estende la classe ("c") ---->Es.. A--->B--->C. Adesso se io richiamo dalla classe ("C") il metodo ("setName()") che si trova nella classe ("A" classe padre) non mi fà l'append nella JTextArea. Sperò che di essermi spiegato bene, e vi ringrazio per l'aiuto. :ciauz:

Gil Mour
13-10-2005, 11:49
Questo l'avevo capito.
Il discorso è che non fai errori concettuali: se A possiede un metodo e A->B->C, C deve vedere quel metodo punto e basta. Per cui molto probabilmente il tuo problema non dipende direttamente dall'ereditarietà, ma avrai fatto qualche errore altrove che ti impedisce di usare il metodo.

Ad esempio, mi è venuto in mente, non è che per caso in B o in C hai ridefinito quel metodo? Perchè se lo hai fatto e vuoi continuare a ereditare il metodo padre devi anteporre al codice nuovo la chiamata super.setName()

HARDCORE3000
13-10-2005, 12:04
Infatti dalle mie conoscenze sapevo che i metodi della classe padre, si estendono anche nelle sottoclassi. Forse l'unico passaggio diverso e questo, che nella classe ("B") dove c'è il Main ho applicato il polimorfismo in questo senso....

queste sono le classi: A--->B----->C

B: CONTIENE IL MAIN

public static void main (String[]argv){
classe A c = new classe b();
a.show();
}

può dipendere da questo?

HARDCORE3000
13-10-2005, 12:39
Risolto :) nella classe C ho fatto un metodo che riceve una Stringa e restituisce un Stringa :) dalla classe B ricavo la Stringa del metodo della classe C. A questo punto nella classe B faccio super.setArea(variabile Stringa) gli passo la Stringa contenente la frase del metodo C e funzione :). Grazie lo stesso per l'aiuto :unz:

Loading