Exercice java abstract et final Trouver les erreurs dans une hiérarchie de classes
Rédigé par Salim KHALIL, Publié le 13 Août 2010, Mise à jour le Lundi, 31 Août 2020 20:52Participez au vote ☆☆☆☆☆★★★★★
But:
|
Trouver les erreurs dans une hiérarchie de classes | |
Thème:
|
abstract, final | |
Fichiers:
|
AbstractFinal.java |
Le programme AbstractFinal ci-dessous implémente une petite hiérarchie de 4 classes (A, B, C et D). Il y a 2 erreurs dans la méthode main et 1 erreur dans la classe D. Toutes les erreurs sont dûes à une utilisation erronée des modificateurs abstract et final. Expliquez ces erreurs.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
class AbstractFinal { public static void main(String[] args) { A x = new A(); B y = new B(); C z = new C(); y.b = 2; z.c = 3; } abstract class A { int a; } class B extends A { int b; } class C extends A { final double c = 1; } abstract class D extends A { double d; int operation(int a) { return (a * 2); } abstract int calcul(int b) { } abstract int machin(); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
class AbstractFinal { public static void main(String[] args) { // Il n'est pas possible d'utiliser new avec une classe abstraite: // A x = new A(); // Faux B y = new B(); // OK C z = new C(); // OK y.b = 2; // OK // Il n'est pas possible de modifier une variable finale: // z.c = 3; // Faux } } abstract class A { int a; } class B extends A { int b; } class C extends A { final double c = 1; } abstract class D extends A { double d; int operation(int a) { return (a * 2); } // Une méthode abstraite ne peut pas avoir d'instructions ou // d'accolades, seulement un point-virgule: abstract int calcul(int b); // { } // Faux abstract int machin(); } |