📜  在 Kotlin 中打开关键字

📅  最后修改于: 2022-05-13 01:55:26.962000             🧑  作者: Mango

在 Kotlin 中打开关键字

关键字是编程语言中一些预定义或特定的保留字,每个保留字都有与之相关的特定功能。几乎所有帮助我们使用编程语言功能的词都包含在关键字列表中。所以大家可以想象一下,关键词列表不会少,“open”关键词也是其中之一,所以本文也是以open关键词为主。现在让我们尝试理解 kotlin 中的“open”关键字。众所周知,kotlin 是一种现代且强烈推荐用于 android 应用程序开发的语言。因为它确实让android app开发变得容易了很多,而且我们都应该知道它也是对Java编程语言的修改,所以我们为什么不通过与Java的比较来理解“open”关键字。即我们可以使用什么来代替Java中的“open”关键字。所以基本上Java有一个名为“ final ”的关键字。但它的作用与“ open ”关键字完全相反,所以让我们快速了解“final”关键字。希望大家都知道,不知道也别着急。

但是, Kotlin有一个特殊的特性,即类和方法默认不开放扩展,这意味着它们默认为最终类或最终函数。这意味着 Kotlin 中的 Open 类和方法相当于Java中的 final 的对立面,在 Kotlin 中 open 方法是可重写的,而 open 类是可扩展的。

例子

示例 1:类的扩展

现在我们知道 kotlin 默认情况下所有内容都是 final 的。因此,如果我们尝试扩展类,那么编译器将显示错误。

Kotlin
class Geeks
class student:Geeks()


Kotlin
// mark the class with "open"
open class Geeks
class student:Geeks()


Kotlin
open class geeks{
  fun student():string ="alok"
}
class batch: geeks() {
  override fun student():string = "ashish"
}


Kotlin
open class geeks{
 // mark the function with open 
 open fun student():string ="alok"
}
class batch: geeks() {
  override fun student():string = "ashish"
}


error: This type is final, so it cannot be inherited

为了让一个类对扩展开放,我们应该使用“open”关键字:

科特林

// mark the class with "open"
open class Geeks
class student:Geeks()

示例 2:覆盖函数(方法)

与类相同,函数(方法)在其默认配置中不能被覆盖,即使包含函数的类是打开的

科特林

open class geeks{
  fun student():string ="alok"
}
class batch: geeks() {
  override fun student():string = "ashish"
}

此代码将显示错误

error: 'student' in 'geeks' is final and cannot be overridden

要覆盖子类中的方法,我们应该使用“open”关键字:

科特林

open class geeks{
 // mark the function with open 
 open fun student():string ="alok"
}
class batch: geeks() {
  override fun student():string = "ashish"
}

现在我们的代码是正确的。