Dzień dobry.
Z pewnego powodu potrzebuję wymusić nadpisanie metody toString(). Spróbowałem zrobić to interfejsem, jednak z racji tego, że toString jest w klasie Object to ten kod się skompiluje:
interface MyInterface {
public abstract String toString(); //wiem, ze public i abstract sa niepotrzebne, ale chce pokazac, ze kod jest prawie taki sam jak nizej
}
public class MyClass implements MyInterface{
}
I do tej pory wszystko jasne, metoda jest w superklasie więc nie mogę oczekiwać, że kompilator mi się wywali. Jednak chce zrobic to samo z klasą abstrakcyjną:
abstract class MyAbstractClass {
public abstract String toString();
}
public class MyClass extends MyAbstractClass{
}
I już kompilator zgłosi błąd.
Chciałbym prosić o dokładne wytłumaczenie, dlaczego klasa abstrakcyjna będzie wymagała nadpisania metody, która już jest w klasie wyżej, a interface już nie.