上一篇博客 Android-Kotlin-配置/入门 配置好了 AndroidStudio Kotlin 的环境;
1.先看一个案例,子类使用到父类的资源 【案例一】
父类 张翠山:
package cn.kotlin.kotlin_oop03 /** * 描述父对象:张翠山 * * personDescribe 此人的简介 / var personDescribe:String 此String是Kotlin的 * * 描述行为:gestAction 武功 */ // 注意:⚠️ 必须此类默认是不被其他类继承的,如果想被其他类继承 需要加入 open 修饰 open class MyFatherClass { // 注意:⚠️ 必须此成员变量默认是不被其他类使用的,如果想被其他类使用 需要加入 open 修饰 open var personDescribe:String = "义薄云天,大仁大义 ...." /** * 显示个人简介 */ // 注意:⚠️ 必须此方法默认是不被其他类使用的,如果想被其他类使用 需要加入 open 修饰 open fun showPersonDescribe() { println("张翠山-Father简介${personDescribe}") } /** * 张翠山的武功 */ // 注意:⚠️ 必须此方法默认是不被其他类使用的,如果想被其他类使用 需要加入 open 修饰 open fun gestAction() { System.out.println("自创剑法,剑法厉害......") } }
子类 张无忌:
package cn.kotlin.kotlin_oop03 class MyChildClass : MyFatherClass() { }
测试 的 main方法:
package cn.kotlin.kotlin_oop03 fun main(args: Array<String>) { // 先打印父类的信息 张翠山 var myFatherClass = MyFatherClass() myFatherClass.showPersonDescribe() myFatherClass.gestAction() println("-----------------------") // 打印子类的信息 张无忌 var myChildClass = MyChildClass() myChildClass.showPersonDescribe() // 调用此方法 由于子类没有此方法,会去往父类找 找到后调用 myChildClass.gestAction() // 调用此方法 由于子类没有此方法,会去往父类找 找到后调用 }
执行结果:
2.对以上案例一进行修改 【案例二】
父类 张翠山:
package cn.kotlin.kotlin_oop03 /** * 描述父对象:张翠山 * * personDescribe 此人的简介 / var personDescribe:String 此String是Kotlin的 * * 描述行为:gestAction 武功 */ // 注意:⚠️ 必须此类默认是不被其他类继承的,如果想被其他类继承 需要加入 open 修饰 open class MyFatherClass { // 注意:⚠️ 必须此成员变量默认是不被其他类使用的,如果想被其他类使用 需要加入 open 修饰 open var personDescribe:String = "义薄云天,大仁大义 ...." /** * 显示个人简介 */ // 注意:⚠️ 必须此方法默认是不被其他类使用的,如果想被其他类使用 需要加入 open 修饰 open fun showPersonDescribe() { println("张翠山-Father简介${personDescribe}") } /** * 张翠山的武功 */ // 注意:⚠️ 必须此方法默认是不被其他类使用的,如果想被其他类使用 需要加入 open 修饰 open fun gestAction() { System.out.println("自创剑法,剑法厉害......") } }
子类 张无忌:
package cn.kotlin.kotlin_oop03 class MyChildClass : MyFatherClass() { /** * 显示个人简介 */ // 重写父类的方法,需要写override override fun showPersonDescribe() { println("张无忌-Child简介${personDescribe}") } /** * 张无忌还在的武功 */ // 注意:override代表 重写父类的方法 override fun gestAction() { println("九阳神功,乾坤大挪移,龙爪手") } }
测试的main方法:
package cn.kotlin.kotlin_oop03 fun main(args: Array<String>) { // 先打印父类的信息 张翠山 var myFatherClass = MyFatherClass() myFatherClass.showPersonDescribe() myFatherClass.gestAction() println("-----------------------") // 打印子类的信息 张无忌 var myChildClass = MyChildClass() myChildClass.showPersonDescribe() myChildClass.gestAction() }
执行的结果:
3.案例三,父类 子类 简单继承:
package cn.kotlin.kotlin_oop03 /** * 描述父类 */ // open 理解为对外暴露,其他地方可以继承 open class Father { // 定义描述性格的变量 注意:var kidney:String 此变量的String是Kotlin的 var kidney:String = "性格文静,热爱运动,喜欢学习" /** * 描述武功的行为/方法 */ // open 理解为对外暴露,其他地方可以调用 open fun showGest() { println("武功平常,只能打打小混混") } } /** * 描述子类 */ class Child : Father() { /** * 描述武功的行为/方法 */ // override代表重写父类的方法 override fun showGest() { println("拥有上乘武功,神照经,难遇敌手....") } } /** * main测试方法 */ fun main(args: Array<String>) { // 打印父类的信息 var f = Father(); println("父类的性格:${f.kidney}") f.showGest() // 父类的武功 println("-------------------------------------------") // 打印子类的信息 var c = Child(); println("子类的性格:${c.kidney}") c.showGest() // 子类的武功 println("-------------------------------------------") // 父类的引用指向子类的对象 以前Java的写法 父类 fc = new 子类(); var fc:Father = Child() fc.showGest() }