kotlin面向对象之抽象类、继承、多态

摘要:
这里需要使用override关键字啦,这其实跟java类似,如下:可是还是报错了,看提示:可见在kotlin当中,默认都是final行为,要想被子类覆盖,还得用open关键字将其开放,如下:当然这时Son也就编译正常啦:这时再重新执行:抽象类:当然也是直接看语法啦,面向对象的语言都类似,这里以人为例:这时咱们要将eat()方法声明为抽象方法,其实现有具体子类来决定,如何搞呢?

继承:

比较简单,直接看如何使用,这里以父亲与儿子的关系为例:

kotlin面向对象之抽象类、继承、多态第1张

接着定义儿子并且继承父亲,如下:

kotlin面向对象之抽象类、继承、多态第2张

是用":"号来继承的,但是此时报错了,看下错误提示:

kotlin面向对象之抽象类、继承、多态第3张

在kotlin的类并非是人人都可以继承的,从提示来看说Father是一个final类型的,好奇怪,也没对Father类声明为final呀,要想解决这个问题,这时需要在Father类中增加一个关键字"open",顾名思议就是将其类开方嘛,如下:

kotlin面向对象之抽象类、继承、多态第4张

这时发现Son就正常可以编译了:

kotlin面向对象之抽象类、继承、多态第5张

这也就是Kotlin继承的语法,记住就成,接下来使用一下:

kotlin面向对象之抽象类、继承、多态第6张

由于儿子是受过高等教育的人,所以其行为跟父亲是有区别的,所以这里就涉及到子类覆盖父类的方法重新定义行为啦,那在kotlin具体如何重写父类的方法呢?这里需要使用override关键字啦,这其实跟java类似,如下:

kotlin面向对象之抽象类、继承、多态第7张

可是还是报错了,看提示:

kotlin面向对象之抽象类、继承、多态第8张

可见在kotlin当中,默认都是final行为,要想被子类覆盖,还得用open关键字将其开放,如下:

kotlin面向对象之抽象类、继承、多态第9张

当然这时Son也就编译正常啦:

kotlin面向对象之抽象类、继承、多态第10张

这时再重新执行:

kotlin面向对象之抽象类、继承、多态第11张

抽象类:

当然也是直接看语法啦,面向对象的语言都类似,这里以人为例:

kotlin面向对象之抽象类、继承、多态第12张

这时咱们要将eat()方法声明为抽象方法,其实现有具体子类来决定,如何搞呢?

kotlin面向对象之抽象类、继承、多态第13张

将其方法体删掉,这时报错了,看错误提示:

kotlin面向对象之抽象类、继承、多态第14张

也就是说需要在方法上显示的声明为抽象的,所以加上:

kotlin面向对象之抽象类、继承、多态第15张

这个跟java类似,不多解释,抽象类定义好之后,接下来定义具体子类来继承这个抽象类,这里用男人和女人为例:

kotlin面向对象之抽象类、继承、多态第16张

kotlin面向对象之抽象类、继承、多态第17张

接下来使用一下:

kotlin面向对象之抽象类、继承、多态第18张

多态:

多态其实就是同种功能的不同表现形态,这里不多解释了,直接看代码,这里举个什么例子呢?对于男人和女人来说都有一个相同的功能:撒尿,但是!公认的男人与女人撒尿的形态是不一样的嘛,所以下面在人类类中定义一个撒屎的行为:

kotlin面向对象之抽象类、继承、多态第19张

接着子类得实现这个抽象方法啦,如下:

kotlin面向对象之抽象类、继承、多态第20张

kotlin面向对象之抽象类、继承、多态第21张

接下来使用一下它,为了体现多态的好处,这里多定义几个人类,如下:

kotlin面向对象之抽象类、继承、多态第22张

接下来将这个人类放到一个集合当中,怎么搞呢?这个之前已经使用过,下面看代码:

kotlin面向对象之抽象类、继承、多态第23张

下面则可以遍历调用一个通用的行为既可将不同人的具体行为给展示出来,如下:

kotlin面向对象之抽象类、继承、多态第24张

编译运行:

kotlin面向对象之抽象类、继承、多态第25张

免责声明:文章转载自《kotlin面向对象之抽象类、继承、多态》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ios 实时音频流获取---分解LFLiveKitSQLServer中进行sql除法运算下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

OC面向对象—继承

OC面向对象—继承 一、基本概念 程序的世界和人类的“对象”世界在思想上是没有设么区别的,富二代继承了父母,自然就拥有了父母拥有的所有资源,子类继承了父类同样就拥有了父类所有的方法和属性(成员变量)。 在这里动物是猫类和狗类的父类,黑猫和白猫类是猫类的子类。 继承的好处: (1)抽取出了重复的代码 (2)建立了类和类之间的联系 继承的缺点: 耦合性太强...

java面试题之----jdbc中使用的设计模式(桥接模式)

1.JDBC(JavaDatabase Connectivity) JDBC是以统一方式访问数据库的API. 它提供了独立于平台的数据库访问,也就是说,有了JDBC API,我们就不必为访问Oracle数据库专门写一个程序,为访问Sybase数据库又专门写一个程序等等,只需要用JDBC API写一个程序就够了,它可以向相应数据库发送SQL调用.JDBC是...

Java面向对象之接口

内容: 1、接口的概念与定义 2、类实现接口 3、接口的特点 4、接口和抽象类的区别 1、接口的概念与定义 (1)类和接口 类:具有相同属性和功能的事物集合 接口:接口是功能的集合,也就是方法的集合,也就是说接口中只能定义方法,不能定义普通的成员变量 而且接口中的成员方法必须都是抽象的,可以理解接口是比抽象类更加抽象的一种类 (2)接口的定义 定义类的关键...

接口和简单工厂设计模式

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 接口: 接口就是纯抽象类的演变,实现接口的类都必须实现接口的的方法。接口里全部都是方法的声明,没有方法的实现。接口里的方法都是public修饰的,就算不写public关键字,也是默认public的,里面的申请的属性 全...

Java 抽象类和接口

抽象类 关键字: abstract 抽象类特点: 方法只有声明没有实现时, 该方法就是抽象方法, 需要被 abstract 修饰, 抽象方法必须定义在抽象类中, 该类必须也被 abstract 修饰 抽象类不可以被实例化. 因为抽象方法没有方法体, 调用抽象方法没有意义 抽象类的子类必须覆盖父类的所有抽象方法后, 该子类才可以实例化 抽象类的细节 抽...

java之多态(Polymorphic)、动态绑定(Dynamic Binding)、迟绑定(Late Binding)

今天,我们来说说java面向对象最核心的东西,多态。通过多态可以使我们的程序可复用性达到极致,这就是我们为什么要学多态的原因。 “多态”(Polymorphic)也叫“动态绑定”(Dynamic Binding)同时也叫“迟绑定”(Late Binding)。 动态绑定是指“在执行期间(而非编译期间)判断所引用对象的实际类型,根据其实际类型调用其相应的方法...