迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

Kotlin Init 和构造函数之间的区别

作者:迹忆客 最近更新:2023/05/10 浏览次数:

Kotlin 是一种面向对象的编程 (OOP) 语言。 构造函数和初始化块是这种 Android 编程语言的重要组成部分。

本文将研究这两个组件之间的区别。


Kotlin 构造函数

顾名思义,Kotlin 构造函数有助于构建类。 类是 OOP 语言的基础。

在 Kotlin 中,有两种类型的构造函数,主要的和次要的。 每个类都可以有一个主构造函数和任意数量的辅助构造函数,这些构造函数使用 constructor 关键字定义。

Kotlin 主要构造函数

Kotlin 中的主构造函数始终是类头的一部分。 它可以有可选参数。

class exampleClass public constructor(str: String, i: Int){
    //functions
}

你可能想知道,如果每个类头都有一个主构造函数,为什么许多类声明时没有使用 constructor 关键字。

如果不想在主构造函数中使用访问修饰符或注解,则可以省略关键字。

class exampleClass (str: String, i: Int){
    //functions
}

由于主构造函数是类头的一部分,因此它不能有任何代码。 我们可以使用 init 关键字将代码放在初始化程序块中,本文稍后会详细介绍。

虽然不允许编写代码,但我们可以使用以下语法声明和初始化主构造函数属性:

class exampleClass (val str: String, var i: Int){
    //functions
}

或者

class exampleClass (
    val str: String,
    var i: Int,
){
    //functions
}

我们还可以在主构造函数中声明属性的默认值:

class exampleClass (val str: String, var i: Int = 15){
    //functions
}

Kotlin 二级构造函数

除了主构造函数,我们还可以使用 constructor 关键字声明一个或多个辅助构造函数。

类的所有次要构造函数都应使用 this 关键字委托给主要构造函数。 这是在 Kotlin 中使用辅助构造函数的示例。

fun main(args: Array<String>){
    var Stu = Student("Zack",17, "Kotlin")
    Stu.printStudentDetails()
}

// This is the primary constructor
class Student constructor(var firstName: String, var age: Int){
    var expert: String = "Nothing"

    // Creating a secondary constructor
    constructor (firstName: String, age: Int, expert: String): this(firstName,age){
        this.expert = expert
    }

    fun printStudentDetails(){
        println("$firstName, a $age years old student, is an expert in $expert.")
    }
}

输出:

Kotlin Secondary Constructor Example


Kotlin 初始化

Kotlin init 关键字用于编写初始化程序块。 这些块有助于为主构造函数编写代码。

我们不能在主构造函数中编写代码,因为它是类头的一部分。 因此,我们可以为此使用辅助构造函数或初始化程序块。

我们还可以在 Kotlin init 块中使用主构造函数的参数和属性。

让我们看一个示例,我们使用 Kotlin init 块检查给定数字是否大于 50。

class Numbers(firstName: String, num2: Int) {
    var res = false
    val n1 = 50

    init {
        res = num2 > n1
    }
}

fun main(){
    var numbers = Numbers("This number is greater than 50", 63)
    println(numbers.res)
}

输出:

Kotlin init Example

由于 Kotlin init 块中的代码是作为主构造函数的一部分编写的,因此它们成为其中的一部分。

由于次构造函数对主构造函数的委托是前者执行期间要做的第一件事,因此 init 块在次构造函数的函数之前执行。

这是一个示例代码。 在这段代码中,我们在 Kotlin init 之上编写了二级构造函数代码; 但是,初始化代码将首先执行。

class Person {
    constructor(i: Int) {
        println("Person $i")
    }

    init {
        println("This part will execute before the secondary constructor's code.")
    }
}

fun main() {
    Person(1)
}

输出:

Kotlin init Executes First Example

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Kotlin 中继承具有多个构造函数的类

发布时间:2023/05/12 浏览次数:200 分类:Java

本文讨论如何扩展具有多个构造函数的类。 构造函数是在创建对象时调用的函数,用于初始化类变量。在 Kotlin 中扩展具有多个构造函数的类

Kotlin中栈数据结构的使用

发布时间:2023/05/12 浏览次数:130 分类:Java

本篇文章我们就来学习一下Kotlin中栈的使用。 我们还将看到用于更新和更改 Kotlin 堆栈的标准函数,包括 push、pop、peek、search 和 isEmpty。我们还将研究比 Kotlin 中的堆栈更好的替代方案。

Kotlin中findViewById函数的使用

发布时间:2023/05/12 浏览次数:183 分类:Java

Kotlin 中的 findViewById 允许在 ID 的帮助下查看和更新视图。 本文介绍了 Kotlin 中 findViewById 函数的使用。

在 Kotlin 中实现构建器模式

发布时间:2023/05/12 浏览次数:106 分类:Java

构建器模式为对象创建问题提供了灵活性。 本文演示了如何在 Kotlin 中实现构建器模式。

在 Java 中获取文件大小

发布时间:2023/05/01 浏览次数:139 分类:Java

Java 提供了不同的方法来获取文件的字节大小。 本教程演示了在 Java 中获取文件大小的不同方法。使用 Java IO 的文件类获取文件大小 Java IO 包的 File 类提供了以字节为单位获取文件大小的功能。

Java 中的文件分隔符

发布时间:2023/05/01 浏览次数:109 分类:Java

本篇文章介绍了 Java 中的文件分隔符。Java 中的文件分隔符 文件分隔符是用来分隔目录的字符; 例如,Unix 使用 /,Windows 使用 \ 作为文件分隔符。

Java 中的文件过滤器

发布时间:2023/05/01 浏览次数:194 分类:Java

本篇文章介绍如何在 Java 中使用 FileFilter。FileFilter 用于过滤具有特定扩展名的文件。 Java内置包IO和Apache Commons IO为FileFilter提供了类和接口来进行文件过滤操作。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便