Kotlin特殊类

class Lateinit{  //延时初始化
//   lateinit val name:Val_var
   lateinit var name:Lateinit

     fun initName(){
        name = Lateinit()
    }

}

fun nullString(){
    val name:String? =  "zhangsan"
    val age:Int? = 12

    println(name?.trim())

    println(name?:age)

    println(name as? String)
    println(name as? Int)

}

//1.构造函数
class AnimalMain(name:String){

    init {  //init属于一级构造函数的函数体
        println("一级构造函数")
    }
	
	//2.二级构造
    constructor(name: String, age: Int) : this(name) {
        println("二级构造函数")
    }
    constructor(age: Int,name: String,color:Int):this(name)



}

class Book @JvmOverloads constructor(name:String){
    init {
        println("一级构造函数")

    }
    constructor():this("java")
}

class Fruit(price:Double){
    constructor(name:String):this(2.0)

 }

class Person(name:String,age: Int = 12){
    companion object Student{
        fun run(){
            println("跑步")
        }
    }
}


//3.抽象类
abstract class Chiken(name:String,sex:Int,var voice:String){
    abstract fun callOut()
}

class Coco(name: String = "唐老鸭", sex: Int, voice: String) : Chiken(name, sex, voice) {
    override fun callOut() {

    }

}

interface Behvior{
    fun fly()

}

fun test(){
    val flower = Tree.Flower("荷花")
    flower.getName()
    Tree("向日葵").Fruit("apple")
}

//4.嵌套类
class Tree(var treeName:String){
    class Flower(var flowerName:String){//嵌套类
        fun getName():String{
            return "荷花"
        }
    }
	//5.内部类
    inner class Fruit(var name:String){//内部类

    }
}
fun testEnum(){
    val seasonName = Season.SPRING.seasonName
}
enum class Season(val seasonName:String){
    SPRING("春天"),
    SUMER("夏天"),
    AUTUMN("秋天"),
    WINTER("冬天")

}

sealed class SeasonSealed{
    class Spring(var name:String)
    class Sumer(var name:String)
    class Autum(var name:String)
    class Winter(var name:String)
}

fun testDataClass(){
//    DataClass("hello").age
    val dataClass = DataClass("apple")
    val name = dataClass.name
    val copy:DataClass = dataClass.copy(name = "pear")

}
 data class DataClass(var name: String){

//      val age:Int = 1
      constructor(  age: Int):this("java")
}


class River<T>(var name:String,var length:T){
    fun getInfo():String{
        var unit:String = when(length){
            is String -> "米"
            is Number -> "m"
            else -> ""
        }
        return "${name}长度是$length$unit"
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值