Не могу скрыть val от конструктора супертипа - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть класс, который расширяет родительский класс, например:

abstract class BaseClass(val mem: Type)

class MyClass(val mem: Type) : BaseClass(mem)

Я объявил член как аргумент конструктора на MyClass, потому что BaseClass, от которого он расширяется, требует чего-то быть переданным, однако это не работает, потому что компилятор говорит мне, что mem "скрывает член супертипа". Я хочу, чтобы этот аргумент был членом BaseClass, поэтому используется val. Как пройти аргумент из MyClass?

1 Ответ

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

Хотя аргумент в конструкторе BaseClass должен быть val, аргумент в конструкторе MyClass не должен быть. Это потому, что это может быть просто аргумент в конструкторе, который не является частью объекта. Поскольку он передается в BaseClass, где он становится свойством объекта и по определению доступен в MyClass:

class MyClass(mem: Type) : BaseClass(mem)

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