class Mammal {
    public void eat () {System.out.println("Jem");};
}
class Bat extends Mammal {
    public void fly () {System.out.println("Latam");};
}
class Dog extends Mammal {
    public void walk () {System.out.println("Chodzę");};
}

public class TestMammal {

    public static void main(String args[]) {

        System.out.println("Kompozycja ponad dziedziczeniem");;

        System.out.println("\nDog");
        Dog fido = new Dog();
        fido.eat();
        fido.walk();
        System.out.println("\nBat");
        Bat brown = new Bat();
        brown.eat();
        brown.fly();
    }
}
---

class Mammal {
    public void eat () {System.out.println("Jem");};
}
class Walkable {
    public void walk () {System.out.println("Chodzę");};
}
class Flyable {
    public void fly () {System.out.println("Latam");};
}
class Dog {
    Mammal dog = new Mammal();
    Walkable walker = new Walkable();
}
class Bat {
    Mammal bat = new Mammal();
    Flyable flyer = new Flyable();
}

public class TestMammal {

    public static void main(String args[]) {

        System.out.println("Kompozycja ponad dziedziczeniem");;
        System.out.println("\nDog");;
        Dog fido = new Dog();
        fido.dog.eat();
        fido.walker.walk();

        System.out.println("\nBat");;
        Bat brown = new Bat();
        brown.bat.eat();
        brown.flyer.fly();
    }
}
---

class Swimmable {
    public void fly () {System.out.println("Pływam");};
}

class Whale {
    Mammal whale = new Mammal();
    Walkable swimmer = new Swimmable ();
}
---

System.out.println("\nWhale");
Whale shamu = new Whale();
shamu.whale.eat();
shamu.swimmer.swim();
---

class Whale {
    Mammal whale = new Mammal();
    Walkable swimmer = new Swimmable ();
}
---

class Dog {
    Walkable walker = new Walkable();
}
---

interface IWalkable {
    public void walk();
}
---

class Dog extends Mammal implements IWalkable{
    Walkable walker;
    public void setWalker (Walkable w) {
        this.walker=w;
    }
    public void walk () {System.out.println("Chodzę");};
}
---

Walkable walker;
public void setWalker (Walkable w) {
    this.walker=w;
}
---

class Mammal {
    public void eat () {System.out.println("Jem");};
}
interface IWalkable {
    public void walk();
}
class Dog extends Mammal implements IWalkable{
    Walkable walker;
    public void setWalker (Walkable w) {
        this.walker=w;
    }
    public void walk () {System.out.println("Chodzę");};
}
public class TestMammal {
    public static void main(String args[]) {
        System.out.println("Kompozycja ponad dziedziczeniem");
        System.out.println("\nDog");
        Walkable walker = new Walkable();
        Dog fido = new Dog();
        fido.setWalker(walker);
        fido.eat();
        fido.walker.walk();
    }
}
---

class Dog {
    Walkable walker;
    public Dog (Walkable w) {
        this.walker=w;
    }
}
---

Walkable walker = new Walkable();
Dog fido = new Dog(walker);
---

class Dog {
    Walkable walker;
    public void setWalker (Walkable w) {
        this.walker=w;
    }
}
---

Walkable walker = new Walkable();
Dog fido = new Dog();
fido.setWalker(walker);
