Как напечатать значение метода get - PullRequest
0 голосов
/ 16 сентября 2018

Я создал приведенный ниже пример в Eclipse. Я следую учебному пособию, и там упоминалось, что я могу использовать print(s1.captain) для печати, например, имени капитана. Учебник хочет показать, что kotlin автоматически генерирует setters и getters.

В моем коде оператор print ничего не печатает

Main :

fun main(args : Array<String>) {
    var s1 = Stronghold1("JJ",7)
    print(s1.captain)
}

оплотом

abstract class Stronghold(name: String, location: String)

stronghold1

class Stronghold1(captain: String, capacity: Int) : Stronghold("GerMachine", "Bonn")

1 Ответ

0 голосов
/ 16 сентября 2018

В Kotlin аргументы конструктора превращаются в свойства, только если они помечены как val или var. В вашем случае captain, capacity, name и location являются просто аргументами для конструктора. Они не превращаются в свойства.

Чтобы получить captain и capacity в качестве свойств, добавьте к ним val:

class Stronghold1(val captain: String, val capacity: Int) : Stronghold("GerMachine", "Bonn")
//                ^^^                  ^^^
//                add                  add   

Вы, вероятно, хотите сделать то же самое с Stronghold:

abstract class Stronghold(val name: String, val location: String)
//                        ^^^               ^^^
//                        add               add
...