OVH Cloud OVH Cloud

[Débutante] Construction d'un objet

30 réponses
Avatar
Lea
Bonjour,

Que fait-on avec l'instruction suivante :
A o1=new B();

Merci.

Léa

10 réponses

1 2 3
Avatar
no.bcausse.spam
Lea wrote:

Bonjour,

Que fait-on avec l'instruction suivante :
A o1=new B();

Merci.

Léa


oh la lea, il faudrait commencer par le debut, un bon livre.

que fait A o1 = new B(); cela cree un objet B que tu affectes a une
reference o1 qui est soit une interface (mais je supose que tu n'en es
pas encore la) soit une classe parente de B.
--
bruno Causse
http://perso.wanadoo.fr/othello

Avatar
Lea
Lea wrote:


Bonjour,

Que fait-on avec l'instruction suivante :
A o1=new B();

Merci.

Léa



oh la lea, il faudrait commencer par le debut, un bon livre.


Ben oui c'est pour ça que dans l'en-tête du message il y a [débutant] ;)
Quant aux bouquins, les cas de figure que je rencontre sont du type :
A o1=new A();
d'où la question.
Quel est le livre que tu conseillerais?


que fait A o1 = new B(); cela cree un objet B que tu affectes a une
reference o1 qui est soit une interface (mais je supose que tu n'en es
pas encore la) soit une classe parente de B.



Avatar
no.bcausse.spam
Lea wrote:

Quel est le livre que tu conseillerais?


java par la pratique (existe t'il tjrs?), ou java in the nutshell
edition o'reilly
--
bruno Causse
http://perso.wanadoo.fr/othello

Avatar
ZebX

Je m'incruste.

Quel est le livre que tu conseillerais?


Thinking in java. Version francaise ici :

http://fr.groups.yahoo.com/group/tij2ndenfrancais/

Le meilleur pour assimiler les bases à mon avis.

Avatar
David Molinier

Quel est le livre que tu conseillerais?


Avant d'acheter un livre, tu peux essayer les cours gratuits suivants,
avec support en PDF ou autre (et exemples de code) :

http://java.developpez.com/cours/

Une mine pour débutants, et plus si affinités...

--
David Molinier <*>

Avatar
Valdo Tschantre
Lea wrote:
Que fait-on avec l'instruction suivante :
A o1=new B();


*On peut (on doit ?) décomposer cette ligne de code en trois parties* :
- L'_instruction_ /new B()/ qui construit une *nouvelle instance
d'objet* de classe /B/ et qui retourne une référence sur cette objet.
- La _définition_ /A o1/ qui définit une *référence* de type /A/.
- L'_instruction_ /=/ qui *affecte* la référence retournée par
l'instruction /new B()/ à la référence /o1/.

*Où* :
- Un type est soit une interface soit une classe (concrète ou non).
- La classe /B/ doit être une classe concrète dérivée du type /A/ et
proposer, dans ce contexte, un constructeur par défaut (ie. sans argument).


/*Remarque* : J'aurais compris ce qu'est la programmation orientée
objet, le jour où je maîtriserais tout ce qu'implique cette simple ligne
de code.../


Valdo.


--


Avatar
Lea

Quel est le livre que tu conseillerais?



Avant d'acheter un livre, tu peux essayer les cours gratuits suivants,
avec support en PDF ou autre (et exemples de code) :

http://java.developpez.com/cours/

Une mine pour débutants, et plus si affinités...



Je connais déjà ce site et j'y ai téléchargé les cours et tutoriaux pour
débutants. J'utilise beaucoup le cours "Introduction au langage Java".
Si je m'y réfère pour le création d'objet, j'ai :
"Un constructeur est une méthode qui porte le nom de la classe et qui
est appelée lors de la création de l'objet. On s'en sert
généralement pour l'initialiser. C'est une méthode qui peut accepter des
arguments mais qui ne rend aucun résultat. Son prototype
ou sa définition ne sont précédés d'aucun type (même pas void).
Si une classe a un constructeur acceptant n arguments argi, la
déclaration et l'initialisation d'un objet de cette classe pourra se
faire sous la forme :
classe objet =new classe(arg1,arg2, ... argn);
ou
classe objet;
…
objet=new classe(arg1,arg2, ... argn);
..."
J'utilise aussi les cours de différentes universités.

Donc j'ai souvent eu accès au : A o1=new A();
On définit le type d'objet que l'on va construire A
Le nom de la référence est o1,
Enfin, new A() réalise l'appel au constructeur.

N'ayant trouvé aucune info dans les cours, j'ai donc posté car
j'ignorais que l'on pouvait créer un objet de d'une classe A en
utilisant le constructeur d'une classe B.

Voilà.

Léa


Avatar
Lea
Lea wrote:

Que fait-on avec l'instruction suivante :
A o1=new B();



*On peut (on doit ?) décomposer cette ligne de code en trois parties* :
- L'_instruction_ /new B()/ qui construit une *nouvelle instance
d'objet* de classe /B/ et qui retourne une référence sur cette objet.
- La _définition_ /A o1/ qui définit une *référence* de type /A/.
- L'_instruction_ /=/ qui *affecte* la référence retournée par
l'instruction /new B()/ à la référence /o1/.

*Où* :
- Un type est soit une interface soit une classe (concrète ou non).
- La classe /B/ doit être une classe concrète dérivée du type /A/ et
proposer, dans ce contexte, un constructeur par défaut (ie. sans argument).


/*Remarque* : J'aurais compris ce qu'est la programmation orientée
objet, le jour où je maîtriserais tout ce qu'implique cette simple ligne
de code.../


Valdo.


Merci Valdo.

Je suis pas sûre de tout avoir compris :
la référence o1 construite avec les données, constructeurs et méthodes
de la classe B "se situe" dans la classe A ou B?

Léa


Avatar
Lea

Lea wrote:

Que fait-on avec l'instruction suivante :
A o1=new B();




*On peut (on doit ?) décomposer cette ligne de code en trois parties* :
- L'_instruction_ /new B()/ qui construit une *nouvelle instance
d'objet* de classe /B/ et qui retourne une référence sur cette objet.
- La _définition_ /A o1/ qui définit une *référence* de type /A/.
- L'_instruction_ /=/ qui *affecte* la référence retournée par
l'instruction /new B()/ à la référence /o1/.

*Où* :
- Un type est soit une interface soit une classe (concrète ou non).
- La classe /B/ doit être une classe concrète dérivée du type /A/ et
proposer, dans ce contexte, un constructeur par défaut (ie. sans
argument).


/*Remarque* : J'aurais compris ce qu'est la programmation orientée
objet, le jour où je maîtriserais tout ce qu'implique cette simple
ligne de code.../


Valdo.


Merci Valdo.

Je suis pas sûre de tout avoir compris :
la référence o1 construite avec les données, constructeurs et méthodes
de la classe B "se situe" dans la classe A ou B?

Léa


En fait c'est pas ça que j'aurais dû demander depuis le début mais
plutôt quelle est la différence entre les deux instructions suivantes et
quelles sont les conséquences pour la deuxième instruction au niveau de
l'accès des données de la classe A puis de la classe B :

A o1=new A();
A o2=new B();



Avatar
ZebX

Ca se résume à un problème de portée.

A o1=new A();
A o2=new B();
B o3=new B();


Si A est un Object et B hérite de A et possède l'attribut couleur.

o1 n'a pas d'attribut couleur.
o2 possède mais ne peut pas accéder à l'attribut couleur.
o3 possède et accède à l'attribut couleur.

1 2 3