Понимание цели абстрактных классов в Java

Предположим, у меня есть два класса, A и B. Класс A определен как абстрактный, а B расширяет этот абстрактный класс, и, наконец, я проверяю результат, и оба класса являются частью одного пакета.

public abstract class A {

    protected abstract void method1(); 

    protected void method2() { 
        System.out.println("This is Class A's method"); 
    } 
}

public class B extends A {

    @Override
    protected void method1() {
        System.out.println("This is B's implementaiton of A's method");
    } 
}  

и теперь, когда я проверяю их:

B b = new B();
b.method1();
b.method2();  

Я получаю ожидаемый результат:

This is B's implementaiton of A's method
This is Class A's method

ВОПРОСОВ:

Какова цель@Override ключевое слово, потому что, если я опущу его, он все еще работает так же.Если я не реализую абстрактный метод, я получаю ошибку компиляции. Так в чем же отличие от реализации интерфейса?Также я могу реализоватьmethod2() в б тоже. Затем выходные данные изменяются на то, что используется в B. Разве это не переопределяет метод родительского класса? Тогда какова цель явного определения метода какАбстрактные в классе А?

Ответы на вопрос(8)

Ваш ответ на вопрос