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
}
}
Внес изменения:
- Импортировал константу
PIизkotlin.math. - Добавил пробелы для улучшения читаемости кода.
- Добавил метод
area()в классCircle, чтобы удовлетворить абстрактное требование базового классаFigure.
