kotlin类的初始化②(主构造函数|主构造函数定义临时变量|主构造函数中定义成员属性|次构造函数|构造函数默认参数)(代码片段)

韩曙亮 韩曙亮     2023-01-22     591

关键词:

文章目录





一、主构造函数定义临时变量



在 Kotlin 类中 , 可以在 类声明 时 在 类名后 定义 " 主构造函数 " ;

在 主构造函数 中 , 可以 定义 成员属性 , 并为 成员属性 提供 初始值 ;

在 主构造函数 中 , 可以定义 临时变量 , 临时变量 一般使用 以下划线为开头 的名称 ;


代码示例 :

class Hello(
    // 主构造函数,
    // 下面的两个参数仅仅用于给成员属性赋值, 只使用一次
    // 这种变量称为临时变量, 使用下划线开头
    _name: String,
    _age: Int
)
    var name = _name
    var age = _age


fun main() 
    var hello = Hello("Tom", 18)
    println(hello.name + " , " + hello.age)

执行结果 :

Tom , 18




二、主构造函数中定义成员属性



在主构造函数中 定义临时变量 , 格式为 :

class 类名(_临时变量名: 临时变量类型)

在主构造函数中也可以 定义成员属性 , 格式为 :

class 类名(var 成员属性名: 成员属性类型)

代码示例 :

class Hello(
    // 主构造函数, 直接在主构造函数中定义属性
    var name: String,
    var age: Int
)

fun main() 
    var hello = Hello("Tom", 18)
    println(hello.name + " , " + hello.age)

执行结果 :

Tom , 18




三、次构造函数



Kotlin 类只允许 在定义类时 定义 一个主构造函数 , 在其中可以定义 临时变量 , 也可以定义 属性变量 ;

次构造函数 定义在 Kotlin 内部 , 可以定义 多个 次构造函数 , 每个次构造函数都可以有不同的参数组合 ;


定义次构造函数后 , 必须调用主构造函数 , 并且为每个主构造函数 的 参数设置 参数值 ;

次构造函数中可以实现代码逻辑 , 作为主构造函数的补充 ;


代码示例 : 下面代码中 , 次构造函数 必须 调用主构造函数 , 如 name 和 age 参数必须设置默认值 name = "Jerry", age = 12 ;

class Hello(
    // 主构造函数, 直接在主构造函数中定义属性
    var name: String,
    var age: Int,
    // 定义临时变量
    _isStudent: Boolean
)
    var isStudent = _isStudent

    // 次构造函数
    constructor(isStudent: Boolean): this(name = "Jerry", age = 12, isStudent)
        // 代码逻辑
        println("次构造函数 : name = $name, age = $age, isStudent = $isStudent")
    


fun main() 
    var hello = Hello("Tom", 18, true)
    println(hello.name + " , " + hello.age)

    var hello2 = Hello(false)
    println(hello2.name + " , " + hello2.age)

执行结果 :

Tom , 18
name = Jerry, age = 12, isStudent = false
Jerry , 12




四、构造函数默认参数



在定义 构造函数 时 , 可以为 构造函数 的参数 指定 默认值 , 如果 用户传入了 值参 则 使用用户传入的值 , 如果用户没有传入值 则 使用该 默认值 ;

如果 构造函数 参数有 指定默认值 , 可以不为其传递 值参 , 构造函数中跳过该参数 , 其 后面的参数需要使用 参数名 = 参数值 进行赋值 ;


代码示例 :

class Hello(
    // 主构造函数, 直接在主构造函数中定义属性
    var name: String,
    var age: Int = 18,
    var isStudent: Boolean
)

fun main() 
    // 如果不传入 age 参数, 则 age 后的参数需要写明参数名称
    var hello = Hello("Tom", isStudent = true)
    println(hello.name + " , " + hello.age + " , " + hello.isStudent)

执行结果 :

Tom , 18 , true

kotlin类与继承

...型参数)后主构造函数不能包含任何代码块,可用init块初始化代码,并且可访问主构造函数的 查看详情

kotlin类的初始化③(init初始化块|初始化顺序:主构造函数属性赋值->类属性赋值->init初始化块代码->次构造函数代码)(代码片段)

文章目录一、init初始化块二、初始化顺序一、init初始化块在Kotlin类中,可以定义init初始化块,在其中可以为变量赋值,执行一些检查相关的代码,该init初始化块在创建类实例对象时执行;代码示例:在下面的代码中的init初始化块中,对... 查看详情

kotlin类的初始化③(init初始化块|初始化顺序:主构造函数属性赋值->类属性赋值->init初始化块代码->次构造函数代码)(代码片段)

文章目录一、init初始化块二、初始化顺序一、init初始化块在Kotlin类中,可以定义init初始化块,在其中可以为变量赋值,执行一些检查相关的代码,该init初始化块在创建类实例对象时执行;代码示例:在下面的代码中的init初始化块中,对... 查看详情

kotlin小悟-这个继承有点不一样(代码片段)

...可以点击下面的文章链接了解。Kotlin系列之主构造方法和初始化语句块Kotlin系列之从构造方法前置知识我们经常会写这样的代码://父类openclassFather//子类classSon:Father()注意到子类在继承父类时,Father后面的()了吗,这... 查看详情

sparkcontext主构造函数代码提取

...任务就是搞清楚sparkContext是怎么构造的,java、C#的class的初始化都是放在一个方法中的,而scala的主构造函数代码几乎散落在真个sparkContext类中,这就需要我们将其整理出来,才能有条理的进行阅读工作。 sparkContext的主构造... 查看详情

kotlin主构造函数次构造函数默认参数init代码块初始化顺序(代码片段)

packagesetimportjava.util.*importkotlin.math.absoluteValue//临时变量只是用一次推荐使用下划线开头classPlayer(_name:String,_age:Int,_isNormal:Boolean//构造参数)//属性varname=_nameget()=field.replaceFirstCharif(it.isLowerCase())it.titlecase(Locale.getDefault())elseit.toS... 查看详情

kotlin的构造函数看这一篇就够了(代码片段)

...是vara,那就是临时的形参了varaa=5init//可以做一些初始化,运行顺序是主构造函数>init块>次构造函数con 查看详情

从零开始学kotlin-枚举

...举常量都是一个对象;enumclassEnumDemo9{RED,BLUE,BLACK,WHITE}枚举初始化每一个枚举都是枚举类的实例,它们可以被初始化;枚举类的主构造函数默认是私有的,初始化时需要在主构造函数中声明;enumclassEnumDemo91(val 查看详情

Kotlin 中的私有构造函数

】Kotlin中的私有构造函数【英文标题】:PrivateconstructorinKotlin【发布时间】:2018-04-0113:04:11【问题描述】:在Java中,可以隐藏一个类的主构造函数,方法是将其设为private,然后通过该类中的publicstatic方法访问它:publicfinalclassFoo/... 查看详情

scala-构造函数(代码片段)

...。一、主构造函数在Scala中,每个类都有主构造函数,和类的定义交织在一起。一个Scala类的主构造函数包括:1、构造函数的参数;2、类体中调用的方法;3、在类体中执行的语句和表达式。如果类名之后没有参数,则该类具备... 查看详情

kotlin学习与实践构造方法

...了一点修改:*区分了主构造方法(通常是主要而简洁的初始化类的方法,并且声明在类外部声明)和从构造方法(在类的内部声明)*同样也允许在初始化语句块中添加额外的初始化逻辑。/***这里被括号围起来的语句块就叫做“... 查看详情

kotlin类与继承(代码片段)

类kotlin中使用关键字class声明类类声明由类名,类头(指定其类型参数,主构造函数等),花括号包围的类体构成,类头和类体都是可选的。classStudent如果一个类没有类体,则可以省略花括号classEmpty主... 查看详情

扩展1(代码片段)

1、必须在构造函数初始化列表里初始化的成员常量成员和引用类型:因为const常量成员和引用类型必须要初始化且不能赋值。特殊情况的对象:这个对象是一个类或结构体,并且他只有带参数的构造函数没有默认构造函数,那么... 查看详情

扩展1(代码片段)

1、必须在构造函数初始化列表里初始化的成员常量成员和引用类型:因为const常量成员和引用类型必须要初始化且不能赋值。特殊情况的对象:这个对象是一个类或结构体,并且他只有带参数的构造函数没有默认构造函数,那么... 查看详情

kotlin初学者类和对象-类的修饰符(代码片段)

...ield1.3.1计算属性1.4构造函数1.4.1主构造器1.4.2次构造器1.4.3初始化顺序1.4.4无构造器二、类的修饰符(类别)2.1classModifier2.2accessModifier一、类和对象1.1前言        Kotlin是一门面向对象的开发语言。也有着面向对象语言的特 查看详情

深入kotlin-类(代码片段)

...in中主构造方法中没有代码(没有方法体)。那么初始化成员变量怎么办?答案是放在init代码块:classMyClass(username:String) init println("initMyClass") username 查看详情

kotlin小悟-这个继承有点不一样(代码片段)

...可以点击下面的文章链接了解。Kotlin系列之主构造方法和初始化语句块Kotlin系列之从构造方法前置知识我们经常会写这样的代码://父类openclassFather//子类classSon:Father()注意到子类 查看详情

scala-构造函数

...。一、主构造函数在Scala中,每个类都有主构造函数,和类的定义交织在一起。一个Scala类的主构造函数包括:1、构造函数参数;2、在类内部被调的方法;3、在类内部执行的语句和表达式。*/classPerson(varfirstName:String,varlastName:Stri... 查看详情