Step into Kotlin - 14 - 继承
2015-07-16 09:40
253 查看
目录
继承
扩展类
重写方法
接口
定义接口
实现接口
多重实现
抽象类
摘要
继承类,重写方法,实现接口,指定实现的父类方法,抽象类
默认所有类都是
子类构造函数需要实现父类的构造函数
由于辅助构造器必须调用主构造器或其它辅助构造器,所以辅助构造器永远不可能直接访问父类的构造器
重写方法时必须加上
调用超类方法时也是使用
接口及其中的方法默认是
以上 Shape 为抽象类,所以需要调用默认构造方法
继承
扩展类
重写方法
接口
定义接口
实现接口
多重实现
抽象类
摘要
继承类,重写方法,实现接口,指定实现的父类方法,抽象类
继承
扩展类
使用:符号
默认所有类都是
final的,如果希望类能够被继承,需要声明为
open class
子类构造函数需要实现父类的构造函数
由于辅助构造器必须调用主构造器或其它辅助构造器,所以辅助构造器永远不可能直接访问父类的构造器
open class Person(name: String) {} class Employee(name: String) : Person(name) {}
重写方法
方法默认为final的,如果希望被重写需要声明为
open fun
final修饰的方法无法被重写
重写方法时必须加上
override关键字,
override方法默认为
open的
调用超类方法时也是使用
super关键字
// 父类 open fun idf() {} open fun idf2() {} // 子类 override fun idf() { super.idf() } // 无法被重写 final override fun idf2() { super.idf2() }
接口
接口类似 Java8,支持方法,抽象方法和抽象属性接口及其中的方法默认是
open的
定义接口
interface A { val prop: Int fun foo() { } fun bar() }
实现接口
class B : A { override fun bar() { throw UnsupportedOperationException() } override val prop: Int get() = throw UnsupportedOperationException() }
多重实现
如果一个类需要实现的类或接口中包含有同名方法,可以使用<>来指明需要调用哪个父类方法
open class TextView : View, OnClickListener { constructor(size: Int) : super(size) // onClick must be overridden override fun onClick() { super<View>.onClick() // call to View.onClick() super<OnClickListener>.onClick() } }
抽象类
抽象类类似接口,默认也是open的,但是必须使用关键字
abstract显示声明抽象成员。
abstract class Shape { abstract fun onClick() } class Rectangle : Shape(), OnClickListener { // not required to override onClick }
以上 Shape 为抽象类,所以需要调用默认构造方法
(),而 OnClickListener 为接口,则不需要这样做。
相关文章推荐
- Ubuntu下Hello World驱动实现全过程
- 关于没有开启mbstring,mb_substr() 用不了的问题
- 用Redis作为Mysql数据库的缓存(-)
- 浅谈HTML5单页面架构(三)—— 回归本真:自定义路由 + requirejs + zepto + underscore
- hdu2602 — Bone Collector
- An analysis of the importance of the long tail in search engine marketing
- java反射
- SUSE 11 SP1 HA corosync 1.2.1+crm sh
- response.setContentType()的String参数及对应类型
- Android Studio 设置内存大小及原理
- Python常用机器学习扩展包
- 跟着 8 张思维导图学习 Javascript
- git总结
- 苹果电脑出现 .DS_Store文件,删除不掉怎么处理?
- oracle异步IO之filesystemio_options参数初探
- hadoop1.2.1报Warning: $HADOOP_HOME is deprecated. 的解决方法
- 【MyBatis框架】mybatis逆向工程自动生成代码
- 《Windows 95 通讯编程》一书中对串口编程的读书笔记
- svn版本控制的Xcode工程打不开 ,报 the file cannot open错误 的解决办法
- 2014中国网络性能报告