美文网首页
Kotlin-类和对象

Kotlin-类和对象

作者: 在下陈小村 | 来源:发表于2021-03-18 20:03 被阅读0次
    类和对象

    类的创建和java还是比较类似的,属性和方法的定义,创建不用写new

    class Person {
        var name=""
        var age=0
    
        fun eat(){
            println(name+" is eating,He is "+age+" years old")
        }
    }
    //对象的创建和使用
    val person=Person()
        person.age=10
        person.name="Tom"
        person.eat()
    

    在kotlin中如果要使用类的继承,那么就需要在类之前加上open关键字

    open class Person {
        var name=""
        var age=0
    
        fun eat(){
            println(name+" is eating,He is "+age+" years old")
        }
    }
    
    class Student:Person(){
        var sno=""
        var grade=0
    }
    
    val student=Student()
        student.grade=2
        student.sno="123123"
        student.name="阿毛"
        student.age=20
        student.eat()
    

    kotlin的构造函数,被继承的主构造函数,带参数时,继承父类的子类的主构造函数也必须带有该参数。次构造函数用constructor来修饰,必须继承主构造函数this。可以只使用次构造函数,直接用constructor,通过super继承父类。

    //主构造函数
    open class Person(val name:String,val age:Int) {
    
        fun eat(){
            println(name+" is eating,He is "+age+" years old")
        }
    }
    //主构造函数和次构造函数
    class Student(var sno:String,var grade:Int,name:String,age:Int):Person(name,age){
        constructor(sno: String,grade: Int):this(sno,grade,"",0)
        constructor():this("",0)
    }
    //只有次构造函数
    class Teacher:Person {
        constructor(grade:Int,name:String,age:Int):super(name, age)
    }
    
    延迟初始化

    在使用的过程中会发现全局变量我一开始并不想直接初始化,当需要使用的时候才初始化,这个我要怎么办,可以通过lateinit var,来延迟初始化,另外可以通过::person.isInitialized来判断参数是否已经完成了初始化,这个是固定写法。

    class MainActivity : AppCompatActivity() {
        lateinit var  person:Person
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            doSomething()
            if (!::person.isInitialized){
                person=Person()
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:Kotlin-类和对象

          本文链接:https://www.haomeiwen.com/subject/crbpcltx.html