Ваша переменная высоты имеет вспомогательное поле, которое будет инициализировано значением после знака =
. Он не будет пересчитан при получении. Таким образом, этот код Kotlin будет эквивалентен следующему коду Java:
// Kotlin
var height = this.head.length + this.body.length + this.legs.length
// Java
// The backing field
private int height = this.head.length + this.body.length + this.legs.length
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
Что вам действительно нужно, так это пересчитывать значение каждый раз, когда вызывается get
-метод. Поскольку вы на самом деле не хотите писать в любое поле height
, вы можете использовать val
вместо var
. Например:
// Kotlin
val height: Int
get() = this.head.length + this.body.length + this.legs.length
// Which is equivalent to this Java code:
public int getHeight() {
return this.head.length + this.body.length + this.legs.length;
}
Как видите, поле отступления пропадет, потому что значение будет пересчитываться каждый раз. Также нет сеттера, потому что мы сейчас используем val
.