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