Kotlin笔记:类的定义与构造函数 ( 主构造器 / 次构造器 )

Kotlin中的可见性修饰符:public,protected,private,internal,如果不加任何修饰符,默认是public

public:默认修饰符,被其修饰的在任何位置都能访问;

private:表示只在这个类(以及它的所有成员)之内可以访问;

protected:在当前类及其子类内访问;

internal:在同一模块内使用;

Kotlin中类的定义:

// 类的定义
class kotlin {

}

类的构造器:

在Kotlin中一个类可以有一个主构造函数和一个或多个次构造函数;

主构造函数是类头的一部分:它跟在类名后。如果主构造函数没有任何注解或可见性修饰符,constructor关键字可省略,否则是必须的;

主构函数不能包含任何代码,初始化代码放在以init关键字作为前缀的初始化块中;

主构函数的参数可以在初始化块中使用,也可以在类体内声明的属性初始化器中使用;

主构造器:

    // 主构造器一般在类的后面加上 constructor() 关键字,后面为传入的参数    

    // 定义主构造器 写法一
    class Person constructor(name: String){
        init {
            println(name)
        }
    }

   // 定义主构造器 写法二
   // 构造器的可见性默认为public,如果可见性为public,可以省略可见性描述符,可见性描述符被省略了,constructor也可以省略
    class Person (name: String){
        init {
            println(name)
        }
    }

    //  main函数中调用
    fun main(arge: Array) {
        Person("HaHa")
    }

Run:

Kotlin笔记:类的定义与构造函数 ( 主构造器 / 次构造器 )_第1张图片

次构造器:

次构造函数声明前缀有 constructor;

class kotlin {
    // 次构造器
    constructor(name: String){
       println(name)
    }
}

如果类定义了主构造器,次构造器必须直接或间接调用主构造器;

class kotlin {
    // 定义主构造器
    class Person (name: String){
        init {
            println(name)
        }
        // 次构造器(通过this直接调用主构造器)
        constructor(age: Int): this("HAHA"){
            println(age)
        }
    }
}

fun main(arge: Array) {
    kotlin.Person(25)
}

Run:

Kotlin笔记:类的定义与构造函数 ( 主构造器 / 次构造器 )_第2张图片

你可能感兴趣的:(Kotlin)