【Kotlin】Kotlin 面向对象 ( 类 | 成员变量 | 成员方法 | 封装 | 继承 | 多态 )
文章目錄
- I . 創建簡單類 ( 整型字段 )
- II . 創建簡單類 ( 整型字段 + 字符串字段 )
- III . 類方法定義
- IV . 封裝
- V . 繼承
- VI . 多態 與 抽象類
I . 創建簡單類 ( 整型字段 )
定義類 :
① 定義類 : 定義類的關鍵字是 class ;
② 定義字段 : 在類后的括號內 , 使用 var 字段名稱:字段類型 可以定義一個字段 ;
/*** 定義 Rect 類 : 定義類的關鍵字是 class** 類字段 : 該類對象有兩個屬性 , 寬 ( width ) 和 高 ( height ) , 類型都是 int**/ class Rect (var width:Int , var height : Int)/*** 函數入口*/ fun main(args:Array<String>){//創建矩形var rect = Rect(10, 8);//使用字符串模板打印 Rect 對象字段println("Rect width : ${rect.width} , height : ${rect.height}") }
執行結果 :
Rect width : 10 , height : 8II . 創建簡單類 ( 整型字段 + 字符串字段 )
定義類 :
① 定義類 : 定義類的關鍵字是 class ;
② 定義字段 : 在類后的括號內 , 使用 var 字段名稱:字段類型 可以定義一個字段 ;
/*** 定義學生類** 定義字段 : 其含有一個字符串字段 ,*/ class Student ( var name:String , var age:Int )fun main(args:Array<String>) {//創建 Student 對象var student = Student("Tom", 18)//使用字符串模板打印 Student 對象字段println("student name : ${student.name} , age : ${student.age}")}
執行結果 :
student name : Tom , age : 18III . 類方法定義
類方法定義 : 使用 fun 關鍵字 , 在類中定義方法 , 在該方法中可以訪問對象的成員變量 ;
/*** 定義學生類** 定義字段 : 其含有一個字符串字段 ,*/ class Student ( var name:String , var age:Int ){fun talk(){println("Student ${name} is talking")}}fun main(args:Array<String>) {//創建 Student 對象var student = Student("Tom", 18)//使用字符串模板打印 Student 對象字段println("student name : ${student.name} , age : ${student.age}")//調用類中的方法student.talk()}執行結果 :
student name : Tom , age : 18 Student Tom is talkingIV . 封裝
封裝作用 : 隱藏對象內部的屬性和方法實現的細節 , 僅對外公開公共接口 ;
如 : Student 類 , 封裝了 name 和 age 字段 , 和 talk 方法 ;
V . 繼承
1 . 父類 : open 關鍵字使用 :
① 打開繼承 : 只有在類前使用 open 關鍵字 , 只有打開了該類 , 才能有類繼承該類 ;
② 允許方法重寫 : 允許方法重寫 , 只有 open 的函數 , 才能被子類重寫 ;
/*** 定義父類** open 關鍵字作用 : 打開繼承 , 只有打開了該類 , 才能有類繼承該類* 允許方法重寫 , 只有 open 的函數 , 才能被子類重寫*/ open class Father {var familyName:String = "Trump"fun name(){println("My family name is ${familyName}")}//允許方法被重寫open fun say(){println("I'm father. family : ${familyName}")}}
2 . 子類 : 繼承類 并 重寫方法 ;
/*** 子類代碼** 繼承 : 使用 冒號 ":" , 表示繼承*/ class Son : Father() {//重寫父類方法override fun say(){println("I'm son. family : ${familyName}")} }3 . 測試繼承 :
/*** 測試繼承*/ fun main() {//創建子類對象var son = Son();//調用子類對象繼承的父類的方法son.name();//調用子類對象重寫的父類方法son.say(); }4 . 執行結果 :
My family name is Trump I'm son. family : TrumpVI . 多態 與 抽象類
1 . 定義抽象類 : 只有抽象類中才能定義抽象方法 ( 與 Java 不同 ) ;
/*** 抽象類 : 只有抽象類中才能定義抽象方法 ( 與 Java 不同 )*/ abstract class Human ( var name:String , var age:Int ) {/*** 定義抽象方法 , 類必須是抽象類*/abstract fun say();}2 . 實現類 1 :
/*** 定義 Man 類 , 繼承抽象類 Human*/ class Man(name : String, age : Int) : Human(name, age) {/*** 實現的 Human 抽象類 的 say 抽象方法*/override fun say() {println("Man : name : ${name} , age : ${age}")} }3 . 實現類 2 :
/*** 定義 Women 類 , 繼承抽象類 Human*/ class Woman(name : String, age : Int) : Human(name, age) {/*** 實現的 Human 抽象類 的 say 抽象方法*/override fun say() {println("Women : name : ${name} , age : ${age}")} }4 . 多態引入 : Man 和 Women 調用 say 方法 , 執行的不同的操作 , 就是多態的體現 ;
/*** 測試抽象類與多態*/ fun main() {// Man 和 Women 調用 say 方法 , 執行的不同的操作// 這就是多態var tom = Man("Tom", 18);//Man : name : Tom , age : 18tom.say();var jerry = Woman("Jerry", 19);//Women : name : Jerry , age : 19jerry.say();}總結
以上是生活随笔為你收集整理的【Kotlin】Kotlin 面向对象 ( 类 | 成员变量 | 成员方法 | 封装 | 继承 | 多态 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Flutter】Dart 数据类型 字
- 下一篇: 【Kotlin】Kotlin 抽象类与接