Polimorfizm

package pl.am.object2.lesson42;

public class Test0 {
    public static void main(String[] args) {

        Zwierze[] zwierzeta = new Zwierze[4];
        zwierzeta[0] = new Pies("łatek", 15);
        zwierzeta[1] = new Kot("mruczek", 3);
        zwierzeta[2] = new Kura(2);
        zwierzeta[3] = new Krowa(200);

        for (int i = 0; i<zwierzeta.length; i++) {
            zwierzeta[i].dajGlos();
        }
    }
}
package pl.am.object2.lesson42;

public class Kot extends ZwierzeDomowe {
    public Kot(String nazwa, double masa) {
        super(nazwa, masa);
    }

    @Override
    public void dajGlos() {
        System.out.println("miauuuuu");
    }
}
package pl.am.object2.lesson42;

public class Krowa extends ZwierzeHodowlane {
    private static int nextId = 1;
    private int id;

    public Krowa(double masa) {
        super(masa);
        id = nextId;
        nextId++;
    }

    @Override
    public void dajGlos() {
        System.out.println("Muuuuuuuuuuu");
    }

    public double dajMleko() {
        System.out.println("Dojenie krowy trwa...");
        return masa*0.01;
    }
}
package pl.am.object2.lesson42;

public class Kura extends ZwierzeHodowlane {
    public Kura(double masa) {
        super(masa);
    }

    @Override
    public void dajGlos() {
        System.out.println("ko ko ko ko ko ko");
    }

    public void zniesJajo() {
        System.out.println("Jajo zostal zniesione");
    }
}
package pl.am.object2.lesson42;

public class Pies extends ZwierzeDomowe {
    public Pies(String nazwa, double masa) {
        super(nazwa, masa);
    }

    @Override
    public void dajGlos() {
        System.out.println("hał hał");
    }

    public void podajLape() {
        System.out.println("podaje łapę");
    }
}
package pl.am.object2.lesson42;

public abstract class Zwierze {
    protected double masa;

    public Zwierze(double masa) {
        this.masa = masa;
    }

    public abstract void dajGlos();
}
package pl.am.object2.lesson42;

public abstract class ZwierzeDomowe extends Zwierze {
    protected String nazwa;

    public ZwierzeDomowe(String nazwa, double masa) {
        super(masa);
        this.nazwa = nazwa;
    }
}
package pl.am.object2.lesson42;

public abstract class ZwierzeHodowlane extends Zwierze {
    public ZwierzeHodowlane(double masa) {
        super(masa);
    }
}

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *