PDA

View Full Version : [JAVA] Come accedere a metodi implementati in altre classi?


ShadowX84
21-05-2007, 14:47
Salve,

Ho una classe madre chiamata "Persona", dalla quale derivano due classi figlie "Alunno" e "Professore", la classe madre potrebbe tranquillamente essere dichiarata come abstract.

Lo scopo del "gioco" consiste nel salvare su un DB un'oggetto "Alunno" oppure un oggetto "professore" (a seconda dei casi).
Dal momento che sarebbe ridondante implementare un metodo "save()" in ogni classe, avevo pensato di crearmi una classe apposita (chiamiamola.. "accessoDB.Java") che implementi il metodo save().

La mia capacità di programmazione è formata al 50% da ruggine e dal restante 50% d inesperienza. Ragion per cui vi chiedo:
Come faccio a rendere disponibile il metodo save() implementato nella classe "acessoDB", agli oggetti "Alunno" e "Professore"?

Che vergogna :(

orpheus
21-05-2007, 15:26
Ehmm forse ho capito male..comunque o lo implementi direttamente in Persona...oppure semplicemente implementi il metodo save() in AccessDB.java pubblico e crei un metodo save() nelle classi Professore e Alunno che non fa altro che richiamare quello di AccessDB.

yorkeiser
21-05-2007, 15:32
Mediamente, nel tuo caso dovresti implementare il metodo nella classe madre, in modo che venga ereditato nelle classi figlie. In generale, comunque, per richiamare un metodo di un'altra classe, ti basta istanziare la classe e richiamare il metodo tramite la classica notazione puntata. Ergo, se hai save() nella tua classe AccessoDB, ti basta chiamare

(new AccessoDB()).save();

o, alternativamente:

AccessoDB adb = new AccessoDB();
adb.save();

ShadowX84
21-05-2007, 15:39
Mediamente, nel tuo caso dovresti implementare il metodo nella classe madre, in modo che venga ereditato nelle classi figlie. In generale, comunque, per richiamare un metodo di un'altra classe, ti basta istanziare la classe e richiamare il metodo tramite la classica notazione puntata. Ergo, se hai save() nella tua classe AccessoDB, ti basta chiamare

(new AccessoDB()).save();

o, alternativamente:

AccessoDB adb = new AccessoDB();
adb.save();

Grazie mille, era proprio quello che volevo sapere, ma a questo punto credo che implementerò il metodo save() nella classe madre, facendolo ereditare, nel mio caso mi semba un modus operandi più elegante...correggetemi se sbaglio.

Grazie ancora ;)

recoil
22-05-2007, 08:34
Grazie mille, era proprio quello che volevo sapere, ma a questo punto credo che implementerò il metodo save() nella classe madre, facendolo ereditare, nel mio caso mi semba un modus operandi più elegante...correggetemi se sbaglio.

secondo me è meglio implementare nella classe madre.
l'esempio che ti fa yorkeiser però tieni conto che in qualche modo devi passare dei dati del tuo oggetto (tipo nome ecc.) ad accessoDB, altrimenti lui che stampa?
ecco perché fai prima ad implementare un save direttamente nella classe Persona, i dati da scrivere sono già disponibili :)

orpheus
22-05-2007, 10:37
Concordo con gli altri per questo caso meglio implementarlo direttamente nelle classe madre