У меня есть класс B, который наследуется от класса A. Суперкласс A является абстрактным, содержащим один абстрактный метод. Я не хочу реализовывать абстрактный метод в классе B, поэтому мне нужно также объявить класс B абстрактным. Объявление абстрактного класса B, для меня работают две вещи (программы компилируются и выполняются правильно):
1.) Я не объявляю абстрактных методов в классе B, даже считал класс абстрактным. Это работает, я полагаю, потому что класс наследует абстрактный метод класса A, и этого достаточно, чтобы класс был объявлен как абстрактный: нам не нужны какие-либо другие абстрактные методы, непосредственно объявленные в классе.
2.) Я объявляю тот же абстрактный метод в классе B, как он объявлен в классе A. Это некоторая переопределяющая (?), а не в том же смысле, что и переопределение в java (с использованием того же заголовка, но обеспечивая различную реализацию), здесь я просто снова использую тот же заголовок метода.
Обе вещи работают, и я не уверен, насколько они оба хороши, и предпочитают ли некоторые из них (более правильные), чем другие. Оба способа одинаковы (они имеют в виду то же самое с Java)?
Здесь я даю несколько примеров классов, так что я имею в виду более ясно для вас:
Случай 1.):
public abstract class A {
public abstract String giveSum();
}
public abstract class B extends A {
}
Случай 2.):
public abstract class A {
public abstract String giveSum();
}
public abstract class B extends A {
public abstract String giveSum();
}
Привет