Если базовый класс и подкласс реализуют один и тот же интерфейс, а реализация метода абстрактного метода предоставляется в базовом классе, то должны ли мы также предоставлять реализацию в подклассе?
Реализация интерфейса как родительским, так и подклассом в java
Ответы (4)
Да, вы можете, и реализация из подкласса выполняется, когда у вас есть парадигма инициализации.
BaseClass v = new SubClass();
Это вполне нормальный полиморфизм/овверидинг.
Связано: Может ли интерфейс расширять несколько интерфейсов в Java?
мы должны также обеспечить реализацию в подклассе
Нет, вы не обязаны этого делать. Если один класс extends
другой, у него уже есть все (public
и protected
) методы, объявленные в родительском классе.
Но вы можете предоставить другую реализацию этого метода. В этом случае метод из родительского класса будет переопределен.
Нет необходимости реализовывать один и тот же интерфейс как в родительском, так и в дочернем классе, потому что, если вы реализуете его в родительском классе, у дочернего также будет тот же метод, но если вы хотите переопределить, вы можете его переопределить.
public interface Shape {
void draw();
}
class Parallelogram implements Shape {
public void draw() {
System.out.println("This is Parallelogram");
}
}
public class Square extends Parallelogram {
@Override
public void draw() {
System.out.println("This Parallelogram is Square");
}
public static void main(String args[0]) {
Square square = new Square();
square.draw();
}
}
//Выведите этот параллелограмм квадратным
public class Rhombus extends Parallelogram {
public static void main(String args[0]) {
Rhombus rhombus = new Rhombus();
rhombus.draw();
}
}
//Вывод: это параллелограмм
Это не требуется, так как подкласс уже имеет реализацию метода в базовом классе.