Traktowanie obiektow roznych klas jednakowo

0

Jedną z zalet intefejsów to traktowanie obiekty różnych klas jednakowo, niestety "nie widzę" tego.

Mam 2 klasy:

public class Human implements Functions {

    String name;

    public Human(String imie){
        this.name = imie;
    }

    @Override
    public void talk() {

    }

}
public class Animal implements Functions {

    String name;

    public Animal(String imie){
        this.name = imie;
    }

    @Override
    public void talk() {

    }

}

i interfes

public interface Functions {
    void talk();
}

więc teraz próbuję na wszystkich obiektach wywołac funkcję talk()

    ArrayList<Object> beings = new ArrayList<>();
    beings.add(new Human("imie1"));
    beings.add(new Animal("imie2"));
    init(beings);

private void init(ArrayList objects) {

    for (int i = 0; i < objects.size(); i++) {
        objects.get(i).talk(); <- IDE podkreśla błąd (Cannot resolve method task())
    }

}

pytanie: czego mi brakuje lub co jest źle ? Proszę o wyjaśnienie.

1

ArrayList<Functions> beings = new ArrayList<>();

1

W parametrze funkcji init powinno być ArrayList<Functions> objects. I brakuje średnika po wywołaniu. Więcej nie widzę teraz, dodaj może treść błędu jaki dostajesz hmm?

1

W init ma być ArrayList<Functions> objects . Pokaż gdzie wołasz init bo tego nie widać za bardzo.

0

Jeszcze 2 pytania

  • obie odpowidzi pomogły i komu dac akpetację ?
  • dlaczego ma być to lista z Functions a nie obiektami ? Troche nie rozumiem, zawsze w klamrach przy liscie kazali wpisywac typ obiektu,a interfejs chyba nie jest typem ? Jest jakies wytlumaczenie ?
1

Bo interfejs Functions ma metodę talk a nie Object. Raczej właśnie kazali pisać interfejs który klasa implementuje, szczególnie w takich przypadkach jak ten. Interfejs to też jakiś tam typ więc Twój obiekt może być jednocześnie Human i Functions.

0

Interfejs to też jakiś tam typ

jakiś tam ? tzn ? jest równoprawny jak np. nowo stworzona przez nas klasa ?

1

Nie wiem co znaczy równoprawny. To tak jak ty jesteś typu człowiek i ssak i trochę głupio pytać czym bardziej jesteś.
Tutaj masz jakieś wywody na temat tego co jest typem: https://stackoverflow.com/questions/16600750/difference-between-class-and-type

1 użytkowników online, w tym zalogowanych: 0, gości: 1