Moje skromne zdanie:
- Tak na prawdę parametr i argument to to samo (zawsze znajdzie się ktoś kto powie że jedno to to, a drugie to tamto).
- Nie jest błędem, ale czasem (lub często) ciężej się utrzymuje taki kod. Ja np mega rzadko stosuję dziedziczenie.
- Nadanie dwóm klasom takich samych interfejsów? Chyba. (Chodzi o to żeby "z zewnątrz" polegać na abstrakcji, nie na implementacji; kompozyt jest po to żeby traktować kilka obiektów jako jeden o jednym interfejsie).
- Z definicji, chyba nie.
- W tak prostym przypadku chyba wszyscy się zgodzą że
x
to zmienna. Przechowuje ona referencję do obiektu "Żaba"
.
- To samo.
animal
to zmienna przechowująca referencję do instancji klasy Animal
.
PS:
Animal first = new Animal();
Animal second = first;
Animal third = second;
W przypadku wyżej mamy jedną instancję obiektu (tylko raz stworzyliśmy obiekt new Animal()
), oraz 3 zmienne (first
, second
i third
) które przechowują referencje do tego obiektu.
PS2:
Animal first = new Animal();
first = new Animal();
first = new Animal();
W tym przypadku instancji jest 3, ale tylko jedna zmienna która przechowuje referencję do ostatniej (bo ostatnia była przypisana).