Как я могу инициализировать объект интерфейса типа конструктором из класса, который реализует родительский интерфейс? - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть интерфейс Worker, интерфейс Painter, расширяющий Worker, и Person, который реализует Worker. Как мне создать Person, который также является Painter?

Нужно ли создавать подкласс из Person?

Почему

Painter painter = new Person();

не работает?

1 Ответ

1 голос
/ 28 апреля 2020

Person, вероятно, не имеет тех же методов, что и Painter, и даже если это так, компилятор не знает этого.

Поскольку ваша переменная объявлена ​​как Painter, хотя , вы сможете вызывать методы из класса Painter. Однако вместо Painter, painter содержит Person.

Так что если бы вы вызвали метод, который есть только у Painter, метод не был бы найден, потому что, опять же, переменная painter на самом деле содержит Person, который не обязательно имеет те же методы.

Чтобы решить эту проблему, сделайте Person extension Painter, но я бы порекомендовал переосмыслить ваши логики c и что вы на самом деле хотите сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...