Kotlin编程之类、对象和接口
来源:互联网 发布:淘宝十大情侣装店铺名 编辑:程序博客网 时间:2024/06/10 11:28
让我们先感受下这两张图片带来的刺激感(作为single dog 的你我还能说什么,还不赶快领券去,不是打广告哦)
以冒号":"代替extends跟implement,同样遵循单继承多实现
1、接口:(重点注意注释)
(1)动物接口
/** * interface: Animals */interface Animals { //. 无任何操作的抽象方法 fun run() {} //. eat()跟walk()方法是一样的,Kotlin的Lambda表达式风格 fun eat() = println("from animals interface") fun walk() { println("animals walk") }}
(2)生物接口
/** * interface: Biology */interface Biology { fun eat() = println("from biology interface")}
(3)普通Dog类实现接口
/** * class(狗) :(实现) interface(动物、生物) */class Dog : Animals, Biology{ // TODO 对比下重写eat()方法跟walk()方法 /** * 两个接口都有eat()抽象方法 * */ override fun eat() { /** * 如果没有使用super<Xxxx>.xxx(),会报错 * */ //. 调用父类Animals的方法 super<Animals>.eat()// super<Animals>.walk() super<Animals>.run() //. 调用父类Biology的方法 super<Biology>.eat() //. 实现自己功能 println("implement the same method") } /** * 只有Animals接口有walk()方法,那么重写walk()方法直接帮我们调用super方法 * */ override fun walk() { super.walk() }}
如果没有使用super去调用会报以下错误,如果你是第一次都没有用super去调用是会报以下错误的,但是回过头来再测试就不行了,有清理项目过也不行,不知道是不是Kotlin语言支持的不完善之处:
2、类:遵循单继承:open关键字修饰的可被继承,默认是final修饰的不能被继承
(1)父类
/** * open: * (1)修饰的类可以被继承,同样称为基类.如果子类继承的类不是open修饰的类,会提示"This type is final, * so it cannot be inherited from" * (2)修饰的方法可以被重写,(默认是final修饰的,不能被重写) */open class Parent { /** * 默认是以public、final修饰的(不行你可以试试,在fun前面添加public、final会变成灰色带下波浪线的-->就是默认的啦) * 默认是不能被重写的,需要用open关键字修饰才能被重写 * */ fun run_1() { println("parent:run_1") } open fun run_2() { println("parent:run_2") } open fun run_3() { println("parent:run_3") }}
(2)子类
/** * 通过冒号":"继承父类,并且被继承的父类后面紧跟括号"()" * 这里就无法重写run_1()的方法了,因为他是final修饰的 */open class Son : Parent() { /** * 同Java一样,默认会调用父类的方法,当然可以去掉super调用的方法,实现自己所要的功能 * */ override fun run_2() { super.run_2() } /** * 默认是open的,final修饰的同样是不能被重写的 * */ final override fun run_3() { super.run_3() }}
/** * 不可被继承的GrandSon类只能重写open修饰的方法 */class GrandSon : Son(){ override fun run_2() { super.run_2() }}
阅读全文
0 0
- Kotlin编程之类、对象和接口
- Kotlin之类和对象
- Kotlin之类和对象
- Kotlin编程之类的介绍和使用
- c++编程之类和对象
- kotlin基础笔记之类、接口、函数和基本语法
- Kotlin编程之接口和实现接口
- Kotlin编程之类的属性
- 高质量编程读书笔记之类和对象
- Kotlin 学习之类和继承
- Kotlin类和对象 (二)--- 接口
- Kotlin 类、对象、接口
- C++面向对象编程(一)之类和对象
- kotlin学习四之类和继承
- Kotlin 官方学习教程之类和继承
- java之类和对象
- Scala之类和对象
- c++之类和对象
- V8 内存分配与垃圾回收
- JAVA-初步认识-第一章知识点框架
- Asp.Net之页面缓存
- Redis 集群搭建与一些配置项
- Qt 中设置窗体透明度的几种方法
- Kotlin编程之类、对象和接口
- cygwin中如何使用gcc
- linux crond
- Java基础学习总结(112)——JUnit 5最新概况
- 多线程精讲
- 环境变量中,classpath的作用
- 如何清除Android 的原始标题栏?
- Android基础--adb使用
- jquery 中 $.map 的使用方法