Kotlin 中 open 關鍵字和 public 關鍵字的區別

Kailash Vaviya 2024年2月15日
  1. Kotlin open 關鍵字
  2. 在不使用 Open 關鍵字的情況下擴充套件 Kotlin 類
  3. 使用 open 關鍵字擴充套件 Kotlin 類
  4. 對函式和變數使用 open 關鍵字
  5. Kotlin public 關鍵字
Kotlin 中 open 關鍵字和 public 關鍵字的區別

Kotlin 允許將 openpublic 關鍵字用於不同目的。由於它們有不同的用途,我們不應該將它們相互混淆。

open 關鍵字表示為擴充套件開放。使用 open 關鍵字,任何其他類都可以從該類繼承。

另一方面,public 關鍵字是訪問修飾符。它是 Kotlin 中的預設訪問修飾符。

讓我們詳細瞭解它們。

Kotlin open 關鍵字

如前所述,Kotlin open 關鍵字允許擴充套件。與 Java 相比,我們可以將其視為與 Java final 相對的關鍵字。

Java final 關鍵字與類和方法一起使用以防止擴充套件。它可以防止覆蓋類中的方法和擴充套件。

使用 final 關鍵字可以輕鬆擴充套件 Java 類。

但是對於 Kotlin,它們預設是 final 的。這意味著預設的 Kotlin 類不允許擴充套件。

因此,我們可以使用 open 關鍵字來使 Kotlin 方法可重寫和類可擴充套件。

在不使用 Open 關鍵字的情況下擴充套件 Kotlin 類

我們將嘗試擴充套件一個類而不用示例中的 open 關鍵字宣告它。

class parent
class child:parent()
fun main() {
    println("Welcome!")
}

輸出:

擴充套件非開放類時出錯

正如我們所看到的,編譯器會丟擲一個錯誤,因為我們還沒有宣告這個類是開啟的。

使用 open 關鍵字擴充套件 Kotlin 類

我們將使用 open 關鍵字來擴充套件類。

open class parent
class child:parent()
fun main() {
    println("Welcome!")
}

輸出:

成功擴充套件 open class

對函式和變數使用 open 關鍵字

與類一樣,即使是函式和變數,預設情況下也類似於 Java final。因此,我們需要使用 Kotlin 的 open 關鍵字來使它們可訪問和可覆蓋。

這是一個將 Kotlin open 關鍵字用於類和變數的示例。

open class Parent(val first_name: String) {

    init { println("Here, we initialize the Parent class") }

    open val size: Int = 
        first_name.length.also { println("Here, we initialize the size of the Parent class: $it") }
}

class Child(
    first_name: String,
    val last_name: String,
) : Parent(first_name.replaceFirstChar { it.uppercase() }.also { println("The parameter of parent class: $it") }) {

    init { println("Here, we initialize the Child class") }

    override val size: Int =
        (super.size + last_name.length).also { println("Here, we initialize the size of the Child class: $it") }
}

fun main() {
    println("Constructing the Child class(\"Christopher\", \"Miller\")")
    Child("Christopher", "Miller")
}

輸出:

將 kotlin open 關鍵字與類和變數一起使用

Kotlin public 關鍵字

public 關鍵字是可見性修飾符。其他修飾語是 privateprotectedinternal

public 關鍵字使任何看到宣告類的客戶端都可以檢視其公共成員。

public 是 Kotlin 中的預設宣告。因此,如果我們不指定任何具體內容,則成員函式和變數是可公開訪問的。

作者: Kailash Vaviya
Kailash Vaviya avatar Kailash Vaviya avatar

Kailash Vaviya is a freelance writer who started writing in 2019 and has never stopped since then as he fell in love with it. He has a soft corner for technology and likes to read, learn, and write about it. His content is focused on providing information to help build a brand presence and gain engagement.

LinkedIn

相關文章 - Kotlin Keyword