Почему файл сценария kotlin не может наследовать класс в том же файле? - PullRequest
0 голосов
/ 03 февраля 2019

Я выкручиваю скрипт my.kts и использую его для запуска kotlin, у меня есть это:

class TestA {
    init {}
    open fun testOpen() {
        println(this)
    }
}
class TestB : TestA {
    override fun testOpen() {
        super.testOpen()
    }
}

Он не компилируется, говоря, что:

error: this type is final, so it cannot be inherited from
class TestB : TestA {
          ^
basic.kts:39:15: error: this type has a constructor, and thus must be     initialized here

класс TestB: TestA {

1 Ответ

0 голосов
/ 03 февраля 2019

Если вы наследуете один класс от другого, а базовый класс имеет первичный конструктор, он должен быть инициализирован.Ваш TestA имеет основной конструктор по умолчанию, поэтому он должен выглядеть следующим образом:

class TestB : TestA() {
    override fun testOpen() {
        super.testOpen()
    }
}

Другая проблема заключается в том, что классы в kotlin являются окончательными по умолчанию, и вы должны явно указать, что они могут быть расширены:

open class TestA

Проверьте это примеры для получения дополнительной информации.

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