kotlin 枚举类&&扩展&&数据类

枚举类&&扩展&&数据类
枚举类
enum class Direction private constructor(val d:Int){
    NORTH(1),SOUTH(2),WEST(3),EAST(4);
    override fun toString(): String {
        return d.toString()
    }
   
}
fun main(){
    val direction1:Direction=Direction.NORTH
    val direction2:Direction=Direction.WEST
    println(direction1.name)//NORTH
    println(direction2.ordinal)//2   获取索引从0开始
    println(Direction.valueOf("SOUTH"))//2
    for (i in Direction.values()){
        println(i)//1 2 3 4
    }
}
扩展函数

扩展函数是在顶层函数中实现的,而且不能使用 open关键字

class Myclass(){
    fun Instansce(){
        println("我是内部成员函数")
    }
}
fun Myclass.Instansce(){
    println("我是顶层函数")
}
fun main(){
    println(Myclass().Instansce())//内部成员函数优先级高,通过扩展函数无法覆盖内部成员函数
}
扩展变量
给导入的包扩展
在本类中可以扩展其它类不可以扩展本类
在类中扩展的函数可以被继承
扩展成员函数,先执行子类被重写的扩展函数,

数据类

data class User(var name: String, var age: Int) {
}
fun main() {
    var u = User("蛮吉", 23)
    println(u)//User(name=蛮吉, age=23)
    println(u.name)//蛮吉
    u.name="满大人"
    println(u.name)//"满大人"
   val(name,age)=u
    println("$name ::  $age")

}
封闭类
sealed class Expr
data class Const(val number: Double) : Expr()
data class Sum(val e1: Expr, val e2: Expr) : Expr()
object NotANumber : Expr()

fun main(){
    val const = Const(100.0)
    println("RS "+eval(NotANumber))
    
}
fun eval(expr: Expr): Double = when (expr) {
    is Const -> expr.number
    is Sum -> eval(expr.e1) + eval(expr.e2)
    NotANumber -> Double.NaN
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值