Kotlin 构造器

Kotlin 构造器,构造器的主要目的是初始化类的属性。在创建类的对象时调用构造器。在 Kotlin 中,我们有两种类型的构造器 – 主构造器和次要构造器。在本指南中,我们将通过示例学习主要和次要构造器,我们还将了解初始化程序块。

Kotlin 中的构造器类型

Kotlin 构造器

  1. 主构造器 – 初始化类的属性

  2. 次要构造器 – 初始化类的属性,我们可以在次要构造器中有额外的初始化代码。

Kotlin 主构造器

主构造器是初始化类的最简单方法。它被声明为类头的一部分。在下面的示例中,我们将构造器(val name: String, var age: Int)声明为类头的一部分。这是我们的主要构造器,它初始化类Studentnameage属性(数据成员)。

fun main(args: Array<String>) {

    //creating the object of class Student
    val stu = Student("Chaitanya", 31)

    println("Student Name: {stu.name}")
    println("Student Age:{stu.age}")
}

class Student(val name: String, var age: Int) {
    //This is my class. For now I am leaving it empty
}

输出:

Kotlin 构造器示例

Kotlin 构造器中的默认值

我们也可以像在下面的例子中那样在 Kotlin 构造器中指定默认值。在这里,我们将默认学生姓名指定为"Student",默认学生年龄为 99。

我们创建了这个类的三个对象,一个具有名称和年龄,第二个对象只有名称,第三个对象没有名称和年龄。正如您在输出中所看到的,创建类的对象时默认值被传递的值覆盖。

fun main(args: Array<String>) {

    //creating the object of class Student
    val stu = Student("Chaitanya", 31)
    val stu2 = Student("Chaitanya")
    val stu3 = Student()

    println("Name: {stu.name} and Age:{stu.age}")
    println("Name: {stu2.name} and Age:{stu2.age}")
    println("Name: {stu3.name} and Age:{stu3.age}")

}

class Student(val name: String = "Student", var age: Int = 99) {
    //This is my class. For now I am leaving it empty
}

输出:

Kotlin 构造器中的默认值

Kotlin 构造器中的初始化程序块

让我们学习在类的构造器中有额外的初始化代码。在下面的例子中,我们有一个初始化块,我们在构造器中使用init声明了它。在这个块中,我们可以有额外的初始化逻辑。

fun main(args: Array<String>) {

    val stu = Student("Chaitanya", 31)
    val stu2 = Student("Chaitanya")
    val stu3 = Student()

}

class Student(val name: String = "Student", var age: Int = 99) {
    val stuName: String
    var stuAge: Int
    init{
        if(name == "Student") {
            stuName = "NA"
            stuAge = 0
        }
        else {
            stuName = name.toUpperCase()
            stuAge = age
        }
        println("Student Name is: stuName")
        println("Student Age is:stuAge")
    }
}

输出:

Kotlin 构造器中的初始化程序块

Kotlin 次要构造器

Kotlin 中的次要构造器是使用constructor关键字创建的。他们在继承中发挥着重要作用。我建议您在通过次要构造器之前先阅读继承主题。

次要构造器的语法

class Student {
    constructor(name: String) {
        // code inside constructor
    }
    constructor(name: String, age: Int) {
        // code inside constructor
    }
}

次要构造器的示例

这是如何在类中声明次要构造器的简单示例。

fun main(args: Array<String>){
    val obj = Student ("Ajeet", 30)
}

class Student{
    constructor(name: String, age: Int){
        println("Student Name: {name.toUpperCase()}")
        println("Student Age:age")
    }
}

输出:

Student Name: AJEET
Student Age: 30

从另一个调用一个次要构造器

在这个例子中,我们有两个次要构造器,一个具有一个参数,另一个具有两个参数。我们使用this关键字从另一个构造器调用构造器。

fun main(args: Array<String>){
    val obj = Student ("Ajeet")
}
class Student{
    constructor(name: String): this(name, 0){
        println("secondary constructor with one param")
    }
    constructor(name: String, age: Int){
        println("secondary constructor with two param")
        println("Student Name: {name.toUpperCase()}")
        println("Student Age:age")
    }
}

输出:

Kotlin 次要构造器

带有父类和子类的 Kotlin 次要构造器示例

在下面的例子中,我们有两个类College,它是父类和子类Student。这里子类的次要构造器使用super关键字调用父类的次要构造器。

fun main(args: Array<String>){
    val stu = Student("Harry", 24)
}

open class College{

    constructor(name: String, age: Int){
        println("parent class constructor")
        println("Student Name: {name.toUpperCase()}")
        println("Student Age:age")
    }
}
class Student: College{
    constructor(name: String, age: Int): super(name,age){
        println("child class constructor")
        println("Student Name: name")
        println("Student Age:age")
    }
}

输出:

parent class constructor
Student Name: HARRY
Student Age: 24
child class constructor
Student Name: Harry
Student Age: 24

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程