Czy nazwa klasy, która dziedziczy z klasy abstrakcyjnej i nie dostarcza implementacji metod zawartych w nadklasie musi zostać poprzedzona identyfikatorem abstract? Bardzo proszę o wyjaśnienie.
Tak.
//edit: O ile nie implementujesz metod oznaczonych jako abstract.
Dzięki, mam jeszcze jedno pytanie tym razem o metody. Czy możliwe jest przesłonięcie metody equals(Object)? Jeśli tak, to jakie zadanie będzie spełniać ta metoda?
Tak. I na dodatek jest to zalecane w wielu wypadkach.
A jej zadaniem jest dawanie odpowiedzi czy obiekt podany jako argument jest identyczny z obiektem na rzecz którego wywoływana jest metoda.
Domyślna implementacja z obiektu Object jest taka, że porównywane są referencje do obu obiektów i na tej podstawie określana równość. Krótko mówiąc referencje dają równość obiektów jeżeli wskazują na ten sam obiekt w pamięci.
Natomiast najczęściej potrzeba ustalać równość różnych obiektów o tej samej zawartości. Jeżeli zawartość jest identyczna (wg kryteriów autora obiektu), to wynikiem jest true.
Można przesłonić metodę equals(). Zanim jednak to zrobisz należy określić w jaki sposób definiujesz równość dwóch obiektów.