Bonjour,
Je suis en 1ère informatique où j'y apprends de nombreux languages. Les examens approchent et je n'ai toujours rien compris aux Object en Java.
Je sais ce qu'est le polymorphisme, l'héritage une variable d'instance...
J'ai essayé avec toute la théorie que ma prof nous a donnés de faire des exercices que j'ai récupérés mais rien à faire, je bloque sur un bon nombre d'entre eux.
Je vais les poster ici et donner ma réponse.
___________________________________________________________
1)Combien d'instances de la classe A sont créées en exécutant le code suivant:Ma réponse:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 A x; A y ; A z; x = new A(); y = x; z = new A();
seulement 2 classes d'instance sont créées car seulement x et z ont été déclarées par la super classe A. (x = new A(); et z = new A();
2)Exercice 2: casting conversion explicite
Soit une classe Grande et une classe Petite telles que Grande extends Petite. Quelles sont les lignes correctes pour le compilateur et pour l'interpréteur?
1. Petite y = new Petite(); Grande x = (Grande) y; Petite z = x;
2. Grande x = new grande(); Petite y = x; Grande z = (Grande) y;
3. Grande x = new grande(); Petite y = x; Grande z = y;
1ère ligne est juste car pour crée un nouvel object, on doit le créer à partir de la super classe. grande hérite de petite.
3)Comment se comportent des deux programmes: qu'affiche le programme dans le(s) cas où aucune erreur ne se produit.
Aucune idée..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public class A { public A() { System.out.println(" Hello"); } } public class B extends A { public static void main(String[] toto){ B b = new B(); } }
Idem j'ai cherché sans trouver.. A priori ça ne fait rien...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class A { public A(int x) { System.out.println("Hello"); } } public class B extends A { public B(){ } public static void main(String[] toto) { B b = new B(); } }
4) Supposons que Fruit, Apple, Orange, Golden Delicious Apple and Macintosh Apple sont déclarées comme ci-dessous. Supposons que fruit est une instance de GoldenDelicious et orange est une instance de Orange.
Fruit
Apple Orange
GoldenDelicious Macintosh
1. Est-ce que fruit est une instance de type Orange?
non car orange hérite de fruit et orange est l'instance de fruit
2. Est-ce que fruit est une instance de type Apple?
non car apple hérite de fruit et apple est l'instance de fruit
3. Est-ce que orange est une instance de type Fruit?
Oui car il hérite des propriété de l’objet fruit
4. Est-ce que orange est une instance de type Apple?
non car orange et fruit hérite tout deux de l’objet fruit mais ne sont pas lier directement. Il s'agit de classe enfant
5. Suppose que la méthode makeApple est définie dans la classe Apple. Est-ce que fruit peut utiliser cette méthode; est-ce que orange peut utiliser cette méthode?
fruit peut l'utiliser que dans un seul cas: fruit f = new apple(); Par contre orange ne pourra jamais utiliser makeApple car makeApple est une méthode propre a Apple
6. Suppose que la méthode makeOrangeJuice est définie dans la classe Orange. Est-ce que fruit peut utiliser cette méthode; est-ce que orange peut utiliser cette méthode?
fruit peut utiliser cette méthode que si fruit f = new orange();
autrement orange peut utiliser les méthodes qui lui sont propre
5)Qu'est-ce qui est faux dans ce code?
réponse: public class Apple extends Fruit. Si Apple est une sous classe de Fruit on n'a pas besoin d'un extends car Apple hérite directement de Fruit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 public class test { public static void main(String[] args){ Object fruit = new Fruit(); Object apple = (Apple) fruit; } } public class Apple extends Fruit{ } public class Fruit{ }
6) overriding versus overloading
a:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public class Test{ public static void main(String[] args){ Object circle1 = new Circle(); Object circle2 = new Circle(); System.out.println(circle1.equals(circle2)); } }
b:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public class Circle{ double radius; public boolean equals(Circle c){ return radius == c.radius; } }
Donner le résultat de la classe Test en utilisant la classe Circle (a) et puis la classe Circle (b); justifiez
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public class Circle{ double radius; public boolean equals(Object c){ return radius == ((Circle)c).radius; } }
Réponse:
a:
b: Je ne comprend pas..
7) Qu'affiche la méthode principale de la classe Test.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 class A { int i = 1; static int j = 3; void m() { i = 5; } static void m1(){ j = 7; } }Réponse: j'affiche dans l'ordre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class Test { public static void main(String[] args){ A a = new A(); System.out.println(a.i); System.out.println(A.j); a.m(); A.m1(); System.out.println(a.i); System.out.println(A.j); } }
1
3
5
7
Je ne vois pas la différence des a et A
J'ai encore d'autre exercices mais si vous savez m'expliquez ceux-ci je saurai peut-être les faire par moi-même. L'examen de Java et Java programmation Object sont dans 1 et 2 semaines. Disons que parmi tous les langages c'est celui où je suis le plus mauvais.
Merci d'avance pour votre aide.
Partager