簡體   English   中英

為什么我不需要在 Kotlin 密封的 class 中寫入屬性 object class?

[英]Why don't I need to write property at object class in sealed class by Kotlin?

我正在使用 Kotlin 開發應用程序。

sealed class DestinationScreen(val route:String){
    object Signup: DestinationScreen(route = "signup")
}

@Composable
fun InstagramApp(){
 
    val navController = rememberNavController()
    
    NavHost(navController = navController, startDestination = DestinationScreen.Signup.route){
        composable(DestinationScreen.Signup.route){
            SignupScreen(navController = navController)
        }
    }
}

我不知道為什么 Signup singleton class 可以使用 argv 擁有屬性“route”? 我了解它繼承了 DestinationScreen。 所以它也有路由屬性。

但是 Destination class 沒有具體的屬性route 如果 Destination class 是數據 class,則不需要聲明該屬性。 不需要{} 數據 class 具有未使用 argv 聲明的屬性。 所以我的意思是 DestinationScreen 應該有具體的屬性route ,如果 Signup 繼承不同屬性的值,它應該覆蓋。 為什么上面的代碼可以工作? 此功能是否有密封 class 或 object class?

請教我。 謝謝你。

但是 Destination class 沒有具體的屬性route

是的,它確實。 route屬性在其構造函數中就在那里聲明。

如果 Signup 繼承了不同屬性的值,它應該覆蓋

不確定您的意思,但 Signup 不需要覆蓋該屬性。 它已經繼承了財產。 通過將值傳遞給超類的構造函數,現有屬性將獲得子類傳遞的初始值,而無需覆蓋它。

您提到了sealeddata class 類型,但它們與本次討論無關。 Inheritance 對密封類和非密封類的工作方式相同。

任何時候 class 擴展另一個 class,它也是 class一個類型,並繼承它的所有屬性和功能,不需要覆蓋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM