marți, 13 iulie 2010

Extinderea interfețelor

In lumea claselor Java nu există moștenire multipla. Orice clasă are exact un singur părinte direct (exceptând clasa Object, aflată în vârful ierarhiei). Oare la fel stau lucrurile și in cazul interfețelor ? Veți afla în doar câteva momente.
/**
 * Studiati codul de mai jos.
 * Cum este posibil sa existe "mostenire multipla" si "mostenire
 * redundanta" ?
 * Cum este posibil sa se suprascrie o variabila finala ?
 * De ce nu se compileaza clasa TestMostenireInterfete2 ?
 * Ce ati putea schimba pentru a permite compilarea ei ?
 */
package work;
interface I1{
    public static final String s = "i1";
    public void met1();
}
interface I2{
    public void met1();
    public void met2();
}
interface I3 extends I1, I2{
    public static final String s = "i3";//suprascriere camp final ?!

    public void met1(); //suprascriere ?
    public void met1(String s); //supraincarcare ?
    public void met3();
}
interface I4 extends I1, I2, I3{} //asta le intrece pe toate !

class TestMostenireInterfete1 implements I3 {
    public void met1() {
        System.out.println(s);
    }
    public void met1(String s) {}
    public void met3() {}
    public void met2() {}
}

class TestMostenireInterfete2 implements I1, I3 {
    public void met1() {
        System.out.println(s);
    }
    public void met1(String s) {}
    public void met3() {}
    public void met2() {}
}

Niciun comentariu:

Trimiteți un comentariu