首页 > 其他分享 >Kotlin的主构造函数

Kotlin的主构造函数

时间:2024-02-21 21:34:07浏览次数:21  
标签:name val grade Kotlin age sno 构造函数

主构造函数没有函数体,如果想在主构造函数中写一些逻辑,Kotlin提供了一个init结构体,所有主构造函数中的逻辑都可以写在里面:

class Student(val sno: String, val grade: Int) : Person(){
    init {
        println("sno is $sno")
        println("grade is $grade")
    }
}

在这里,Person类后面的一对空括号表示Student类的主构造函数在初始化的时候会调用Person类的无参数构造函数,即使在无参数的情况下,这对括号也不能省略。

 

open class Person(val name:String, val age: Int) {
    fun eat() = println("name is $name, age is $age")
}
class Student(val sno: String, val grade: Int, name: String, age: Int) : Person(name, age) {
    init {
        println("sno is $sno")
        println("grade is $grade")
    }

    var score: Int = 0
}

我们在Student类的主构造函数中增加name和age这两个字段时,不能再将它们声明成val,因为在主构造函数中声明成val或者var的参数将自动成为该类的字段,这就会导致和父类中同名的name和age字段造成冲突。因此,这里的name和age参数前面不用加任何关键字,让它的作用域仅限定在主构造函数中即可。

几乎用不到次构造函数,Kotlin提供了一个给函数设定参数默认值的功能,基本上可以替代次构造函数的作用。。。不过次构造函数有函数体。

标签:name,val,grade,Kotlin,age,sno,构造函数
From: https://www.cnblogs.com/touchmore/p/18026254

相关文章

  • 构造函数和原型
    1.1对象的三种创建方式字面量方式varobj={}; 2.new关键字varobj=newObject();3.构造函数方式functionPerson(name,age){this.name=name;this.age=age;}varobj=newPerson('zs',12);构造函数是一个特殊的函数,用来初始化对象,为对象成员变量......
  • Kotlin学习, 新手向,变量总汇,基于《第一行代码Android(第三版)》
    作者做的思维导图变量val和var区别valvalue不可变变量varvariable可变变量变量的自动类型推导(弱)vala=10;print("a="+a);变量的显式声明(强)vala:Int=10;数据类型注意和java不同,这些都是对象数据类型,大写开头:IntShortLongFloatDoubleB......
  • kotlin--Object关键字
    1.匿名内部类Object可以实现,继承一个抽象类的同时,实现多个接口。interfaceA{funfunA()}interfaceB{funfunB()}abstractclassMan{abstractfunfindMan()}funmain(){//这个匿名内部类,在继承了Man类的同时,还实现了A、B两个接口......
  • c++定义类的时候,只提供拷贝构造函数而不提供默认(无参)构造函数和有参构造函数会怎样?
    4.2.4构造函数调用规则默认情况下,c++编译器至少给一个类添加三个函数:默认构造函数(无参,函数体为空)默认析构函数(无参,函数体为空)默认拷贝构造函数(对属性进行值拷贝)构造函数调用规则:如果用户定义有参构造函数,编译器不会提供默认(无参)构造,但是会提供默认拷贝构造函数如果用户......
  • C++类开发第二篇(浅析构造函数和析构函数)
    class_2构造函数构造函数是一种特殊的成员函数,用于创建和初始化类的对象。它的名称与类的名称相同,没有返回值,也不需要显式调用。在C++中,每个类都必须至少有一个构造函数。当我们创建一个类的对象时,编译器会自动调用构造函数来初始化该对象的成员变量。构造函数可以执行一些操作......
  • 【Kotlin基础】Kotlin的标准函数
    所谓标准函数,就是指Standard.kt文件中定义的函数,任何Kotlin代码都可以自由调用所有标准函数,本文主要讨论下几个常用的标准函数:首先看看直观的对比:传入this传入itreturnlambda的最后一行runletreturnthisapplyalsorun()run()函数是具备接收者的隐式调用(apply()),返回的是lambda的......
  • 构造函数
    ......
  • AndroidStudio-创建Kotlin匿名内部类时自动补全
    AndroidStudio-创建Kotlin匿名内部类时自动补全用Kotlin写代码,当要创建匿名类实例时,总是要自己手敲出来,不像Java一样,输入new就会有代码提示出来,去网上搜索,大部分都是AndroidStudio按住ctrl+空格键,或者ctrl+alt+空格会出现代码提示,我试了,嗯...好像啥反应也没有,然后发现每次按,输入......
  • IDEA编译报错:Error:Kotlin: Module was compiled with an incompatible version of Ko
    问题Error:Kotlin:ModulewascompiledwithanincompatibleversionofKotlin.Thebinaryversionofitsmetadatais1.6.0,expectedversionis1.1.13.Warning:Kotlin:RuntimeJARfilesintheclasspathshouldhavethesameversion.Thesefileswerefoundi......
  • Kotlin扩展函数原理解析
    一、扩展函数扩展函数可以方便地给现有类增加属性和方法而不改动类地代码。二、原理funString.addTo(s:String):String{returnthis+s}反编译:@Metadata(mv={1,6,0},k=2,d1={"\u0000\n\n\u0000\n\u0002\u0010\u000e\n\u0002\b\u0002\u001a\u......