Kotlin: Platform declaration clash

Код:

abstract class Figure {
var color: Color? = null
abstract fun setColor(color: Color)
abstract fun getColor(): Color?
abstract fun perimeter(): Double
abstract fun area(): Double}

Достал меня уже уже "declaration clash" error. Где там ошибка понятия не имею. До компиляции всё зелёное, а после компиляции выводит ошибку:

введите сюда описание изображения

А вот код класса Circle:

class Circle(private val center: Point, private val radius: Double) : Figure() {
override fun setColor(color: Color) {
    this.color = color
}

override fun getColor(): Color? {
    return color
}

override fun perimeter(): Double {
    val PI = 3.141592
    val P = 2 * PI * radius
    return P
}
}

Ответы (3 шт):

Автор решения: Danila Kartovitskii

Уберите set/get функции, они и так генерируется при создании переменной

var color: Color? = null

Вот эти две функции Вам не нужны.

   abstract fun setColor(color: Color)

   abstract fun getColor(): Color?

Вы создаете публичную переменную и дополнительно к ней пишете сет и гет (В kotlin'e этого делать не нужно), которые уже и так есть.

Circle(...).color = newColor // set
Circlt(...).color // get
→ Ссылка
Автор решения: Golibjon Odinaev
enum class Color {
RED, GREEN, BLUE

}

abstract class Figure {
abstract var color: Color?
abstract fun setColor(color: Color)
abstract fun getColor(): Color?
abstract fun perimeter(): Double
abstract fun area(): Double

}

class Circle(private val center: Point, private val radius: Double) : Figure() {
override var color: Color? = null

override fun setColor(color: Color) {
    this.color = color
}

override fun getColor(): Color? {
    return color
}

override fun perimeter(): Double {
    val PI = 3.141592
    val P = 2 * PI * radius
    return P
}

}

→ Ссылка
Автор решения: Golibjon Odinaev

Код выглядит вполне функциональным, но для улучшения его читаемости и точности можно внести несколько изменений:

import kotlin.math.PI

abstract class Figure {
    var color: Color? = null

    abstract fun setColor(color: Color)
    abstract fun getColor(): Color?
    abstract fun perimeter(): Double
    abstract fun area(): Double
}

class Circle(private val center: Point, private val radius: Double) : Figure() {
    override fun setColor(color: Color) {
        this.color = color
    }

    override fun getColor(): Color? {
        return color
    }

    override fun perimeter(): Double {
        return 2 * PI * radius
    }

    override fun area(): Double {
        return PI * radius * radius
    }
}

Внес изменения:

  1. Импортировал константу PI из kotlin.math.
  2. Добавил пробелы для улучшения читаемости кода.
  3. Добавил метод area() в класс Circle, чтобы удовлетворить абстрактное требование базового класса Figure.
→ Ссылка