Страницы

Поиск по вопросам

вторник, 5 марта 2019 г.

Реализация интерфейса в производном классе

Класс А реализует интерфейсы Serializable и Cloneable. От него наследуется класс B
Реализует ли производный класс интерфейсы базового класса?


Ответ

Реализует. В этом можно убедиться на примере:
public class A implements java.io.Serializable, Cloneable { }
public class B extends A { }
B b = new B(); System.out.println(b instanceof java.io.Serializable); System.out.println(b instanceof Cloneable);
В обоих случаях будет выведено true

По поводу комментария:
Если класс A будет абстрактным:
public abstract class A implements java.io.Serializable, Cloneable { }
то в данном конкретном случае для класса B ничего не поменяется.
Однако если, например, класс A будет выглядеть так:
public abstract class A implements AutoCloseable { }
то в классе public class B extends A придётся реализовать метод close из интерфейса AutoCloseable, потому что иначе возникнет ошибка компиляции:
java.lang.RuntimeException: Uncompilable source code - B is not abstract and does not override abstract method close() in java.lang.AutoCloseable

Комментариев нет:

Отправить комментарий