日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Kotlin】Kotlin 类的继承 一 ( 类继承基本方式 | final 关键字 | 子类主构造函数 | 子类次构造函数 )

發布時間:2025/6/17 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Kotlin】Kotlin 类的继承 一 ( 类继承基本方式 | final 关键字 | 子类主构造函数 | 子类次构造函数 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

        • I . 類繼承基本方式
        • II . 使用 final 禁止類繼承 / 方法重寫
        • III . 父類沒有主構造函數
        • IV . 父類有主構造函數
        • V . 父類構造函數與子類構造函數總結



I . 類繼承基本方式



0 . 類繼承格式 : 使用 " : " 繼承父類 ; 如果該父類有主構造函數 , 那么子類必須至少有一個主構造函數或次構造函數 , 子類的構造函數下面會根據不同情況詳細解析 ;

//注意這里的父類構造函數需要實際調用 class 子類 : 父類 {//子類函數體override fun 被重寫的父類方法名 ( 被重寫的父類方法參數 ){//要執行的函數內容} }

1 . 類繼承限制 : 子類使用 : 父類 ( 父類構造函數參數列表 )


① 類繼承限制 : 只有被 open 修飾的類 , 才能有子類繼承該類 , 普通的類不允許被繼承 ;

② 類方法被重寫限制 : 只有被 open 修飾的方法 , 才能被子類重寫 , 被重寫的子類函數 , 必須使用 override 修飾 ;

③ open 修飾類限制 : open 關鍵字不能修飾 final 類 , 給 final 類添加 open 修飾編譯報錯 ;


2 . 類繼承代碼示例 :

//定義父類 , 必須被 open 修飾 , 需要子類重寫的方法也要被 open 修飾 open class Father{open fun action(){ println("Father")} }//定義子類 , 子類重寫父類方法必須添加 override 修飾函數 class Son : Father() {override fun action() { println("Son") } }

II . 使用 final 禁止類繼承 / 方法重寫



final 修飾類 : 如果類被 final 關鍵字修飾 , 那么該類無法被 open 關鍵字修飾 , 也就無法被繼承 ;


final 修飾方法 : 如果類中的函數被 final 關鍵字修飾 , 那么該類無法被 override 重寫 ;



III . 父類沒有主構造函數



1 . 父類沒有主構造函數 : 準確的說是 , 父類的主構造函數沒有參數 , 省略了 constructor 關鍵字和空的括號 () ;


2 . 省略 constructor 和 () 的代碼示例 : 下面的兩個類是等價的 , 只是第一個是類定義的標準形式 , 第二個省略了 constructor 關鍵字和空的括號 ;

open class Father constructor(){open fun action(){ println("Father")} }open class Father{open fun action(){ println("Father")} }

3 . 子類有主構造函數 : 父類必須在主構造函數中初始化 , 子類的 constructor() 可以省略 ; " : " 后的 Father() 相當于調用了父類的主構造函數 , 將子類的主構造函數委托給父類的主構造函數執行 ;

open class Father{open fun action(){ println("Father")} }//constructor() 可以省略 class Son constructor() : Father() {override fun action() { println("Son") } }//與上面的 Son 是等價的 , 省略了 constructor() class Son : Father() {override fun action() { println("Son") } }

4 . 子類沒有主構造函數 : 此時子類的每個次構造函數都必須委托父類的主構造函數執行 ;

open class Father{open fun action(){ println("Father")} }class Son : Father {constructor() : super(){}constructor(age : Int) : super(){}override fun action() { println("Son") } }

IV . 父類有主構造函數



1 . 如果父類有主構造函數 : 其中的 constructor 如果沒有注解與可見性操作符 , 可以省略 ;

open class Father constructor(var name : String , var age : Int){open fun action(){ println("Father")} }

2 . 子類有主構造函數 : 子類需要在主構造函數中定義需要的變量 , 其中的參數 , 可以直接傳遞給后面委托調用的主構造函數 ;

class Son constructor (name : String, age: Int) : Father(name, age) {override fun action() { println("Son") } }

3 . 子類沒有主構造函數 : 如果沒有主構造函數 , 那么子類必須有次構造函數 , 子類需要在次構造函數中定義需要的變量 , 其中的參數 , 可以直接傳遞給后面 super ( ) 委托調用的主構造函數 ;

class Son : Father {constructor (name : String, age: Int) : super(name, age){}override fun action() { println("Son") } }

V . 父類構造函數與子類構造函數總結



子類構造函數最終委托 : 子類的構造函數歸根到底都要委托給父類的主構造函數 ;


① 子類主構造函數 : 假如子類有主構造函數 , 該主構造函數肯定要委托父類的主構造函數執行 ;

② 子類次構造函數 : 此時子類的次構造函數都要委托子類的主構造函數執行 , 相當于間接委托父類主構造函數執行 ;

總結

以上是生活随笔為你收集整理的【Kotlin】Kotlin 类的继承 一 ( 类继承基本方式 | final 关键字 | 子类主构造函数 | 子类次构造函数 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。