Я читал о различии между интерфейсами и абстрактными классами, но это сбивает с толку. Рассмотрим этот интерфейс и класс.
interface I {
public int hashCode();
public boolean equals(Object obj);
}
class B implements I {
// Works Fine
}
Здесь он работает отлично, и мне не нужно переопределять методы интерфейса, потому что Object является супер-классом B, и эти методы реализованы в нем.
Теперь рассмотрим эти
abstract class A {
public abstract int hashCode();
public abstract boolean equals(Object obj);
}
class C extends A {
// Compile error because methods are not overridden
}
Почему это приведет к ошибке компиляции? Означает ли это, что объект не является суперклассом для абстрактного класса? Или я пропустил какой-то момент?