class A { int x; } class B extends A { String x; public void printX() { System.out.println(x); } }On rajoute la classe Test.
class Test { public static void main(String[] args) { System.out.println(new B().x); } }
class A { static int x; } class B extends A { static String x; public static void printX() { System.out.println(x); } }
class A { protected int x() { return 3; } } class B extends A { public int x() { return 4; } public void printX() { System.out.println(x()); } } 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() { ... } void b() { ... } void c() { ... } void c(A a) { ... } void c(B b) { ... } static void d() { ... } void e() { ... } int f() { ... } void g() throws RuntimeException { ... } void h() throws IOException {...} } class B extends A { public void a() { ... } protected void b() { ... } public void c(A a) { ... } static void d() { ... } static void d(A a) { ... } char f() { ... } void g() throws ArrayIndexOutOfBoundsException { ... } void h() { ... } } class C { public static void main(String[] args) { A aa = new A(); A ab = new B(); B bb = new B(); aa.a(); ab.a(); 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(aa); bb.c(ab); bb.c(bb); ((A)bb).c(aa); bb.c(ab); bb.c(bb); } }