美文网首页
Android- Kotlin (主构造函数、次构造函数)

Android- Kotlin (主构造函数、次构造函数)

作者: 是刘航啊 | 来源:发表于2020-05-13 15:45 被阅读0次

    博主也是刚开始学习 Kotlin 没多久,本文是对《第一行代码》- 第三版中主构造函数和次构造函数的总结。非常推荐这本书作为 Kotlin 入门,建议可以自己把书中的例子自己敲一遍。

    Kotlin 中的继承
    open class People {
    
    }
    

    Java 中类是可以默认继承的,但是 Kotlin 不一样。如果想要在 Kotlin 中的类被继承,那么需要使用关键字 open。

    class Student : People() {
    
    }
    

    Java 中继承使用 extends,Kotlin 中继承使用 " : " 来处理。Java 中类继承不需要括号, Kotlin 中类继承需要括号。


    主构造函数
    • 父类无参构造函数
    //不带参数
    class Student (): People() {
    
    }
    

    每个类有个默认不带参数的主构造函数。
    主构造函数的特点-> 没有函数体,直接定义在类名后。

    //带参数
    class Student(sno: String, grade: Int) : People() {
    
    }
    

    Java 和 Kotlin 一样,子类的构造函数必须调用父类的构造函数。
    上面代码中 Student 类初始化主构造函数时候会调用 People 类的无参主构造函数,即使没有参数也不能省略,所以这也是 Kotlin 中继承类有括号的原因。

    • 父类有参构造函数
    class Student(sno: String, grade: Int, name: String, age: Int) : People(name, age) {
    
    }
    

    当父类主构造函数带参数时,由于子类必须实现父类主构造函数,所以可以在子类的主构造函数中加入父类构造函数需要的参数。


    次构造函数
    class Student(sno: String, grade: Int, name: String, age: Int) : People(name, age) {
    
        constructor(name: String, age: Int) : this("", 0, name, age) {
    
        }
    
        constructor() : this("", 0) {
    
        }
    
    }
    

    1-> 次构造函数通过 constructor 关键字定义
    2-> Kotlin 规定所有次构造函数必须调用主构造函数

    有没有很像 Java 中的重载
    • 特殊情况,子类和父类都没有构造函数
    class Students : Persons {
        constructor(name: String, age: Int) : super(name, age) {
    
        }
    }
    
    
    open class Persons {
        constructor(name: String, age: Int) {
    
        }
    }
    

    子类没有主构造函数所以不用带括号,同理父类也是一样。
    this 关键字和 super 关键字也会比较好理解。


    主构造函数和次构造函数大概就介绍到这里了,如果有什么写得不对的地方欢迎指出,如果你觉得这篇文章对你有帮助就帮忙点个赞吧。

    相关文章

      网友评论

          本文标题:Android- Kotlin (主构造函数、次构造函数)

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