|
Dernière réponse | ||
---|---|---|
Sujet : [java] aidez moi a repondre a ces questions (tres rapide) | ||
Krueger |
|
Aperçu |
---|
Vue Rapide de la discussion |
---|
Krueger |
|
drakkeng |
|
El_gringo |
|
benou | autre exemple : tu peux faire ca : int i, j, k, l; i = j = k = l = 666; l'affectation renvoie la valeur affectée (comme en C) |
drakkeng |
[edtdd]--Message édité par Drakkeng--[/edtdd] |
El_gringo |
[edtdd]--Message édité par El_Gringo--[/edtdd] |
jupiler | new Bidule(15) -> référence sur objet bidule dont le membre 'a' est initialisé à 15
new Bidule[15] -> référence sur un tableau de 15 Bidules, les différents Bidules n'étant pas initialisés (donc Bidule[0] vaudra null par exemple) [edtdd]--Message édité par jupiler--[/edtdd] |
drakkeng |
[edtdd]--Message édité par Drakkeng--[/edtdd] |
El_gringo | non, ms tu comprend pas ce que je veux dire: quand tu fais une affectation, la référence vient bien de qqs part. c qu'elle est retournée par l'opérateur, forcément ! par contre, en Java, en fait, je pense que c pas accessible. J'pense qu'on peut pas définir d'opérateur en Java (je suis pas sur, je connais pas bien le Java... d'ailleur, ça m'interresserai de savoir)
mais en C++, on peut redéfinr, dans ses propres objets, des opérateurs, tout comme on surcharge des fonctions. En fait, là, je suis en train de penser, c évidement que les opérateurs peuvent aussi renvoyer un valeur, g une preuve: l'opérateur == rend un bool par exemple. c forcé, puisque on peut faire des if (MonObj == SonObj) et un if, ça se fait que sur des bool, et toc ! :D et donc, je disais, en C++, on peut faire des trucs du style: bool MonObj:operator==(const MonObj& _Obj) c une fonction qui rend un BOOL et qui redéfini l'opérateur == Mais en Java, je l'répète, je crois pas qu'on puisse faire ça ! |
drakkeng |
|
ethernal | thx :jap: |
El_gringo |
|
ethernal | oui je suis d'accord, mais le terme est assez mal choisi ;)
on s'attend à un "return" dans la fonction lorsque l'on parle de "retourne qqch". c purement linguistique. une petit question stupide (que j'ai jamais testée, j'ai très très peu pratiqué je java), si on fait un - return x dans le constructeur d'une classe, ça crash ou tu obitiens la valeur retournée ? - return this, c'est autorisé ? ça fct ? ça renvoie la référence à l'objet ? |
El_gringo |
|
ethernal | ça "retourne" pas vraiment... ça initialise ta variable à une référence vers ton objet. |
El_gringo |
[edtdd]--Message édité par El_Gringo--[/edtdd] |
drakkeng |
|
El_gringo |
|
drakkeng | donc si je resume pour la deuxiéme il faut faire :
Chose c1 = new Truc(10); Bidule c2 = c1; Truc c3 = (Truc)c1; et ainsi c1 ,c2 et c3 sont de type Truc ? j'ai bon ? |
drakkeng |
|
shinji | La creation d'un objet, ça retourne l'objet créé en question. |
drakkeng |
|
Krueger | a) Une question plus générale peut être: Quel est le type de ces expressions?"
Par exemple "new String()" est de type String. "1 + 1" et "10" sont de type int. Pour la question de l'énoncé le premier serait une chaîne de charactères (String) vide, le deuxième 2 et le troisième 10. b) A la compilation tu ne peux pas "affecter" (ou considérer, si tu vois ce que je veux dire) un objet d'une certaine classe A vers un autre de type B si A n'est pas une classe descendante de B (ou un sous-type de B si tu préfères). Tu peux contourner ça en castant explicitement ta classe, mais si A n'est pas sous-type de B une exception ClassCastException sera levée lors de l'exécution. Voilà, en espérant t'avoir suffisamment aidé sans te faire les questions. ;) |
drakkeng | Salut ,je revise un partiels et y a des questions que je capte pas :
Etant donné le programme suivant: class Bidule { int a=0; Bidule(int x){ a = x; } } a) Indiquez ce que retournent les deux expressions suivantes (en d'autres termes, quelle est la "valeur" de ces expressions)? new Bidule(15) new Bidule[15] b) Soient les classes suivantes: class Chose extends Bidule { Chose(int x){ super(x);} } class Truc extends Chose { Truc(int x){ super(x);} } Indiquez, pour chacune des expressions suivantes, si elles sont correctes ou non, et dans ce cas, quel type d'erreur produisent-elles (et est ce une erreur de compilation, ou d'exécution) et comment peut on faire pour qu'elles ne produisent plus d'erreur? Chose c1 = new Truc(10); Bidule c2 = c1; Truc c3 = c1; merci |