美文网首页
kotlin类的构造函数和属性(2)

kotlin类的构造函数和属性(2)

作者: Bfmall | 来源:发表于2022-11-09 17:56 被阅读0次

一、init初始化代码块

/**
 * DESC   : init初始化代码块
 */
class KtBaseClassTest06(name : String ,age : Int) {
    companion object {
        const val TAG = "KtBaseClassTest06"
    }

    /**
     * init代码块不是java中的static{}
     * 而是相当于java中的 {} 代码块,主构造函数实例化之后才会调用到init代码块
     *
     * 主构造函数的临时参数输入类型只能在init代码块直接使用,要不就是var varName = name接收后使用
     */
    init {
        //主构造函数的init初始化代码块调用了==>name=张三, age=19
        Log.d(TAG, "主构造函数的init初始化代码块调用了==>name="+name+", age="+age)

        /**
         * 对临时参数判断
         * 1.如果require(true) {此错误代码不会执行,不会报错},
         * 2.如果require(false) {走错误代码,会抛异常}
         */
        require(name.isNotBlank()) {
            //如果为空,会走这里,并且抛出异常Caused by: java.lang.IllegalArgumentException: 1
            Log.d(TAG, "name=${name}")
        }

        require(age > 0) {
            //如果age <=0,会抛出异常Caused by: java.lang.IllegalArgumentException: 1
            Log.d(TAG, "年龄不符合,异常抛出")
        }


    }

    /**
     * 次构造函数调用的时候,会先调用主构造函数的init代码块
     * 执行结果如下:
     * 主构造函数的init初始化代码块调用了==>name=李四, age=18
     * 次构造函数调用==>name=李四, age=18, sex=M
     */
    constructor(name: String, age : Int, sex : Char) : this(name, age) {
        Log.d(TAG, "次构造函数调用==>name=${name}, age=${age}, sex=${sex}")
    }
}

二、初始化顺序,包含init测试

/**
 * DESC   : 初始化顺序,包含init测试
 * 初始化顺序说明:类成员和init{}代码块是同时执行的,只不过按照顺序生成
 */
//第一步:先生成val age: Int
class KtBaseClassTest07(_name : String, val age : Int) {

    companion object {
        const val TAG = "KtBaseClassTest07"
    }

    /**
     * 第二步,生成name变量,犹豫name赋值是在init{}代码块前面,所以先生成
     * 其实name和init{}代码块是同时执行的,只不过按顺序输出
     */
    var name = _name

    init {
        //第三步,生成tempName变量
        val tempName = _name
        Log.d(TAG, "init==>tempName="+tempName + ", age="+age)
    }


    constructor(_name : String, _age: Int, _sex : Char) : this(_name, _age) {
        Log.d(TAG, "次构造函数调用_name=${_name}, _age=${_age}, _sex=${_sex}")
    }

    //第四步,生成info变量
    var info = "hello lanny"


    fun showInfo() {
        Log.d(TAG, "info=${info}")
    }

}

相关文章

  • Kotlin 类和对象

    原文地址:Kotlin 类和对象 一、类定义 Kotlin 类可以包含:构造函数、初始化代码块、函数、属性、内部类...

  • 类和对象

    Kotlin 类和对象类定义Kotlin 类可以包含:构造函数和初始化代码块、函数、属性、内部类、对象声明。Kot...

  • Kotlin学习笔记——基础语法篇之类和对象

    类的构造 Kotlin类的写法 Kotlin类的构造函数分为主构造函数和二级构造函数 主构造函数的特点——函数名为...

  • Kotlin教程 第6章 类和对象

    类定义 Kotlin 类可以包含:构造函数和初始化代码块、函数、属性、内部类、对象声明。 Kotlin 中使用关键...

  • 类和继承

    类 Kotlin 中使用 关键字 Class 声明类 构造函数 Kotlin 中类可以有主构造函数 和 次构造函数...

  • Kotlin 类和对象

    类的定义 Kotlin 类可以包含:构造函数和初始化代码块、函数、属性、内部类、对象声明。Kotlin 中使用关键...

  • Kotlin 类和对象

    类定义 Kotlin 类可以包含:构造函数和初始化代码块、函数、属性、内部类、对象声明。Kotlin 中使用关键字...

  • Kotlin 类和对象

    类定义 Kotlin 类可以包含:构造函数和初始化代码块、函数、属性、内部类、对象声明。Kotlin 中使用关键字...

  • Kotlin入门五 类和对象

    1.类定义 Kotlin 类可以包含:构造函数和初始化代码块、函数、属性、内部类、对象声明。Kotlin 中使用关...

  • kotlin类的构造函数和属性(2)

    一、init初始化代码块 二、初始化顺序,包含init测试

网友评论

      本文标题:kotlin类的构造函数和属性(2)

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