AppletTalk.com Forum Index AppletTalk.com
Java discussions newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

poliformismo

 
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian)
View previous topic :: View next topic  
Author Message
Corti
Guest





PostPosted: Wed Jun 29, 2005 2:20 pm    Post subject: poliformismo Reply with quote



che differenza c'è tra queste due istruzioni:

A a1 = new A();
e
a1 = new B()

tenendo conto che A è una classe e B una sua estensione.


Grazie
Ciao Corti



Back to top
b.mauro
Guest





PostPosted: Wed Jun 29, 2005 2:44 pm    Post subject: Re: poliformismo Reply with quote



Corti wrote:

Quote:
che differenza c'è tra queste due istruzioni:

A a1 = new A();

vengono eseguiti i metodi di A con l'implementazione di A

Quote:
a1 = new B()

vengono eseguiti i metodi di A con l'implementazione di B

Quote:
tenendo conto che A è una classe e B una sua estensione.

inoltre vengono eseguite le istruzioni definite nel costruttore.

ciao

--
mauro

Back to top
Corti
Guest





PostPosted: Wed Jun 29, 2005 3:10 pm    Post subject: Re: poliformismo Reply with quote



Scusa la mia ignoranza ma cosa intendi per implementazione??


Grazie e Ciao
Corti


"b.mauro" <b.mauroTOGLI (AT) MIvirgilio (DOT) it> ha scritto nel messaggio
news:42c2b1e5_1 (AT) newsgate (DOT) x-privat.org...
Quote:
Corti wrote:

che differenza c'è tra queste due istruzioni:

A a1 = new A();

vengono eseguiti i metodi di A con l'implementazione di A

a1 = new B()

vengono eseguiti i metodi di A con l'implementazione di B

tenendo conto che A è una classe e B una sua estensione.

inoltre vengono eseguite le istruzioni definite nel costruttore.

ciao

--
mauro



Back to top
b.mauro
Guest





PostPosted: Wed Jun 29, 2005 4:01 pm    Post subject: Re: poliformismo Reply with quote

Corti wrote:

Quote:
Scusa la mia ignoranza ma cosa intendi per implementazione??


per implementazine intendo il corpo del metodo.

--
mauro

Back to top
Corti
Guest





PostPosted: Wed Jun 29, 2005 4:33 pm    Post subject: Re: poliformismo Reply with quote

Con una dichiarazione di questo tipo:




class A { void take(long a){System.out.println("A");}}

class B extends A{ void take(int b) {System.out.println("B");}}

long l = 3L;

int i = 2;



e questo tipo di istruzioni:



1 --> A a1 = new A();

2 --> a1.take(i);

3 --> a1 = new B();

4 --> a1.take(i);



l'istruzione alla riga 2 ritorna la stringa "A"

mentre l'istruzione alla riga 4 cosa ritorna "A" o "B" ???



Oltre a dirmi quale è la risposta esatta mi potresti spiegare anche perchè??



Grazie e Ciao

Corti




"b.mauro" <b.mauroTOGLI (AT) MIvirgilio (DOT) it> ha scritto nel messaggio
news:42c2c405$1_1 (AT) newsgate (DOT) x-privat.org...
Quote:
Corti wrote:

Scusa la mia ignoranza ma cosa intendi per implementazione??


per implementazine intendo il corpo del metodo.

--
mauro



Back to top
Vincent Vega
Guest





PostPosted: Wed Jun 29, 2005 4:50 pm    Post subject: Re: poliformismo Reply with quote

Corti wrote:
Quote:
che differenza c'è tra queste due istruzioni:

A a1 = new A();
e
a1 = new B()

tenendo conto che A è una classe e B una sua estensione.

Che nel secondo caso a1 espone metodi e proprietà della classe A, ma
avranno un behaviour come implementato nella classe B.

Esempio pratico: se nella classe A c'è un metodo:

String getValue() {
return "Sono A";
}

e la classe B fa l'override del metodo:

String getValue() {
return "Sono B";
}

il risultato di a1.getValue() nel primo caso è "Sono A" mentre nel
secondo è "Sono B" (polimorfismo, appunto, poter assumere più "morfologie").

Back to top
CarMas
Guest





PostPosted: Thu Jun 30, 2005 8:08 am    Post subject: Re: poliformismo Reply with quote

Corti wrote:

Quote:
class A { void take(long a){System.out.println("A");}}
class B extends A{ void take(int b) {System.out.println("B");}}

Devono avere la stessa signature!

Saluti
CarMas

Back to top
Luca Li Greci
Guest





PostPosted: Thu Jun 30, 2005 7:29 pm    Post subject: Re: poliformismo Reply with quote

Corti wrote:
Quote:
Con una dichiarazione di questo tipo:

class A { void take(long a){System.out.println("A");}}

class B extends A{ void take(int b) {System.out.println("B");}}

Attenzione al tipo di parametro, perchè nella classe A take accetta un long

e in B un int, quindi in questo caso non stai effettuando l'override del
metodo = nuova implementazione ma l'overload = sovraccarico di proprietà.

Quote:
long l = 3L;

int i = 2;

e questo tipo di istruzioni:

1 --> A a1 = new A();

2 --> a1.take(i);

3 --> a1 = new B();

4 --> a1.take(i);

l'istruzione alla riga 2 ritorna la stringa "A"

mentre l'istruzione alla riga 4 cosa ritorna "A" o "B" ???


Viene stampato sempre e comunque A perchè in java esite la promozione

implicita a tipo quindi un int viene promosso a long. Il metodo della classe
A accetta un long e il metodo della classe B è "solamente" un int.
per spiegarmi meglio, pensa alla classe B come fosse generata in questi
termini
class B {
void take(long a){System.out.println("A");} void take(int b)
{System.out.println("B");} }
per il concetto di promotion il metodo con signature int non viene "visto"

Quote:

Oltre a dirmi quale è la risposta esatta mi potresti spiegare anche
perchè??


Ok, la perplessità che venga stampato solo e sempre A puoi risolverla

cambiando la firma del metodo della classe B da int a long.
Quando eseguirai lo stesso pezzo di codice che tu passi un int, che verrà
promosso a long, o direttamente un long avrai in output:
A
B
Quote:

Grazie e Ciao
Prego

Corti
Luca




Back to top
Display posts from previous:   
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.