Co możemy powiedzieć analizując natomiast poniższy kawałek kodu projektu Company?Employee employee = new Employee()
Employee employee2 = employee;
Stworzyliśmy 1 instancję klasy Employee oraz stworzyliśmy referencję do tego obiektu w postaci zmiennej employee o typie Employee.
Natomiast dlaczego referencja employee2 wskazuję na referencję employee ? I co to znaczy dla projektu ?
Tworząc instancję new Employee(), Java musiała fizyczne gdzieś przypisać miejsce w pamięci komputera.
Adres do tego miejsca został przypisany w zmiennej employee.
Gdybyśmy stworzyli instancję obiektu new Employee() bez referencji stracilibyśmy adres tego miejsca.
Natomiast stworzyliśmy drugą referencję do tego samego miejsca w postaci zmiennej employee2, co sprawia, że te 2 obiekty wskazują na ten sam obiekt w pamięci. Można więc powiedzieć, że są sobie równe.
Każda klasa w Java dziedziczy ( to słowo omówimy później ) po klasie Object. Możecie wejść do tej klasy i ją obejrzeć w Intellij.
Metoda do porównywania klas w Java jest dziedziczona po klasie Object i nazywa się equals.
public boolean equals(Object obj) {
return (this == obj);
}
Jak już wspomnieliśmy, skoro zmienna employee i employee2 wskazują na to samo miejsce w pamięci, to metoda equals zwróci tutaj true.
Spróbuj natomiast stworzyć sobie 2 identyczne instancje obiektu employee i zobacz, co zwróci equals …