(接口,类)Kotlin:应为成员声明
课程目标:阅读复习要点和评论,确保分数在0-5分之间(接口,类)Kotlin:应为成员声明,kotlin,interface,Kotlin,Interface,课程目标:阅读复习要点和评论,确保分数在0-5分之间 class LimitedReview(val point:Int, val comment:String):Review { if (point<0){ point=0 } if (point>5){ point = 5 } override fun stars(): Int =point override fun info(): String =comment } 错误:(2,5)Kotlin:应为成员声明
class LimitedReview(val point:Int, val comment:String):Review {
if (point<0){
point=0
}
if (point>5){
point = 5
}
override fun stars(): Int =point
override fun info(): String =comment
}
错误:(2,5)Kotlin:应为成员声明
错误:(2,17)Kotlin:冲突重载:public final fun():在LimitedReview中定义的单元,public final fun():在LimitedReview中定义的单元
错误:(2,17)Kotlin:函数声明必须有名称
谢谢 创建类时,类的主构造函数中的属性将直接将调用构造函数的值分配给
点
属性,并且您不能再修改它
基本上,该代码:
class LimitedReview(val point: Int)
与此相同:
class LimitedReview(point: Int) {
val point: Int = point // ctor param to property
}
如果要在将值分配给属性之前执行逻辑,则必须将属性移到构造函数之外,并手动初始化它 如果您有复杂的逻辑,这可以通过以下方式完成:
class LimitedReview(point: Int) {
val point: Int
init {
if (point < 0) {
this.point = 0
} else if (point > 5) {
this.point = 5
} else {
this.point = point
}
}
}
class LimitedReview(point: Int) {
val point: Int
init {
if (point < 0) {
this.point = 0
} else if (point > 5) {
this.point = 5
} else {
this.point = point
}
}
}
class LimitedReview(point: Int) {
val point: Int = point.coerceIn(0..5)
}