版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengxu_kuangrexintu/article/details/82560903
前言
前面两篇博客中,我给大家分享了Kotlin面向对象的封装和继承两大特性,那这篇博客将给大家分享Kotlin面向对象最后一个特性——多态。
多态
同一种功能多种表达形态。
Demo
我们创建一个类表示我们人类,人类又分为男人和女人。人类都会吃饭,吃饭有很多形态,让男人站着吃,女人坐着吃。我们用代码表示,如下:
1.创建一个父类(基类)
/**
* 抽象的人类
*/
abstract class Human(var name: String) {
/**
* 定义一个吃的方法
*/
abstract fun eat()
}
2.创建两个子类
男人类
/**
* 男人类
*/
class Man(name:String) :Human(name){
// 重写吃的方法
override fun eat() {
println("${name}站着吃饭")
}
}
女人类
/**
* 女人类
*/
class Woman(name:String) :Human(name) {
// 重写吃的方法
override fun eat() {
println("${name}坐着吃饭")
}
}
3.测试类
fun main(args: Array<String>) {
// 创建一些人
var person1 = Man("Test1")
var person2 = Woman("Test2")
var person3 = Man("Test3")
var person4 = Woman("Test4")
var person5 = Man("Test5")
//请上面的人吃饭到房间吃饭(集合表示)
var houseList = listOf(person1,person2,person3,person4,person5)
for (h in houseList){
h.eat()
}
}
4.运行结果
总结
同一种功能多种表现形式,这就是我们的多态。上面的Demo只是一个粗浅的例子,我们在日常的开发当中会经常碰到多态的。