class A { protected int x() { return 3; } public void printX() { System.out.println(x()); } } class B extends A { public int x() { return 4; } } class Test { public static void main(String[] args) { B b = new B(); System.out.println(b.x()); } }
Dans les exemples de classes suivants vous commencerez par dire où se trouvent les erreurs de compilation. Vous les expliquerez et retirerez les méthodes en provoquant. Vous indiquerez ensuite où sont les surcharges et les redéfinitions. Pour les appels de méthodes vous indiquerez également les méthodes appelées.
class A { public void a() {System.out.println("Aa"); } void b(B b) {System.out.println("Ab(B)");} void c() {System.out.println("Ac");} void c(A a) {System.out.println("Ac(A)"); } void c(B b) {System.out.println("Ac(B)"); } static void d() {System.out.println("static Ad");} void e() {System.out.println("Ae");} int f() {System.out.println("Af"); return 2;} void g() throws RuntimeException {System.out.println("Ag"); } void h() throws ArrayIndexOutOfBoundsException {System.out.println("Ah"); } protected void i() {System.out.println("Ai");} } class B extends A{ public void a() {System.out.println("Ba"); } protected void b(B b) {System.out.println("Bb(B)");} public void c(A a) {System.out.println("Bc(A)");} static void d() {System.out.println("static Bd");} static void d(A a) {System.out.println("Bd(A a)");} char f() {System.out.println("Bf"); return 'c';} void g() throws ArrayIndexOutOfBoundsException {System.out.println("Bg"); } void h() throws Exception {System.out.println("Bh");} private void i() {System.out.println("Bi");} } class Min { public static void main(String[] args) { A aa = new A(); A ab = new B(); B bb = new B(); aa.a(); ab.a(); aa.b(aa); ab.b(ab); bb.e(); aa.d(); bb.d(); aa.c(aa); aa.c(ab); aa.c(bb); ab.c(aa); ab.c(ab); ab.c((B)ab); ab.c(bb); ab.c((A)bb); ((B)ab).c(aa); ((B)ab).c(ab); ((B)ab).c((B)ab); ((B)ab).c(bb); bb.c(ab); bb.c(bb); ((A)bb).c(aa); bb.c(ab); bb.c(bb); } }
Le but de cet exercice est d'écrire une implanattion de liste de chainée en utilisant les paquetages.
Les sources (les .java) seront
stockées dans un répertoire nommé src.
Pour la suite de l'exercice, l'ensemble des classes créées
devra être créé dans le paquetage fr.umlv.datas.
Pour cela, créer un répertoire "fr" dans le répertoire "src",
puis un répertoire "umlv" à l'intérieur du répertoire "fr"
et enfin un répertoire "datas" à l'intérieur du
répertoire "umlv".
Les fichiers sources (.java) du paquetage
fr.umlv.datas seront donc stockées
dans le répertoire src/fr/umlv/datas
Pour tester ses classes, créer une classe Main sans paquetage (on dit dans le paquetage par défaut) et utiliser le mot-clé import pour utiliser les classes fr.umlv.datas.Link et fr.umlv.datas.LinkedLink.
javac -d ../classes fr/umlv/datas/*.javaNoter que l'arborescence des répertoires sous classes est généré automatiquement.