从零开始学Kotlin-类的继承(6)
从零开始学Kotlin基础篇系列文章
Kotlin中的超类Any
- Kotlin 中所有类都继承超类 Any 类
class demo6 //默认继承超类Any
class demo6 : Any()
- Any类有三个默认的函数
override fun equals(other: Any?): Boolean {
return super.equals(other)
}
override fun hashCode(): Int {
return super.hashCode()
}
override fun toString(): String {
return super.toString()
}
- 如果一个类想被其他类继承,使用open关键字修饰
open class BaseClass (name:String) {//基类
}
class Demo6: BaseClass("SiberiaDante") {//继承基类
}
类的构造函数的继承
- 如果子类有主构造函数,则基类必须在主构造函数中立即初始化。
open class Person(var name : String, var age : Int){// 基类
}
class Student(name : String, age : Int, var no : String, var score : Int) : Person(name, age)
- 如果子类没有主构造函数,则必须在每一个二级构造函数中用 super 关键字初始化基类,或者在代理另一个构造函数。初始化基类时,可以调用基类的不同构造方法。
open class Person(name: String) {
constructor(name: String, age: Int) : this(name)
}
class Student : Person {
constructor(name: String) : super(name)//调用基类主构造
constructor(name: String, age: Int) : super(name, age)//调用基类次级构造
}
类中方法的重写
- 使用fun声明函数时默认为final修饰,不能被子类重写。如果基类允许子类重写该函数,则需要使用 open 关键字修饰, 子类重写方法使用 override 关键词:
open class Person { //基类
fun man() {//不允许子类重写的方法
print("男人")
}
open fun women() {//允许子类重写方法
print("女人")
}
}
class Gender : Person() {//子类
override fun women() {//重写父类方法
// super.women()
}
}
类中属性的重写
- 属性的重写必须具有兼容类型,重写使用 override 关键字,每一个声明的属性都可以通过初始化程序或者getter方法被重写
open class BaseColor() {
open val red: String = "Red"//基类可重写的属性
}
class redColor : BaseColor() {
override val red: String="Red1"//重写基类属性
override val red: String//重写基类属性
get() = super.red
}
- 可以var属性重写val属性,但不能用val属性重写var属性。因为val属性本身定义了getter方法,重写为var属性会在衍生类中额外声明一个setter方法
open class BaseColor() {
open val red: String = "Red"//基类可重写的属性
}
class redColor : BaseColor() {
override var red: String="Red1"//重写基类属性
override var red: String//重写基类属性
get() = super.red
}
从零开始学Kotlin-类的继承(6)的更多相关文章
- kotlin 类的继承
与Java不同,kotlin 使用冒号,而Java 中使用extends, 注意冒号后面需要调用夫类的构造器.属于单继承,使用open 关键字允许继承class package loaderman.d ...
- 从零开始学Kotlin第六课
Kotlin调用java代码: 1.如果是内部工程的类,直接调用,如果是外部的工程项目按照java的方式将jar包导入进来. 2.实例化java对象 我们之前学java的时候实例化对象是这个样子的. ...
- 从零开始学Kotlin第四课
面向对象: //妹子 性格 声音 class Girl(var chactor:String,var voice:String) fun main(args: Array<String>) ...
- 从零开始学C++之虚继承和虚函数对C++对象内存模型造成的影响
首先重新回顾一下关于类/对象大小的计算原则: 类大小计算遵循结构体对齐原则 第一个数据成员放在offset为0的位置 其它成员对齐至min(sizeof(member),#pragma pack(n) ...
- Java从零开始学十一(类和对象)
一.面象对象 二.什么是类 我肯定说,不知道.不清楚. 简单讲类是java中的基本单元,类是具有相同特性和行为的对象集合 三.类的定义 3.1.类的定义 class 类名称{ 数据类型 属性 ; … ...
- 从零开始学Kotlin第七课
1.强制类型转换需要在后面加两个感叹号 2.如果需要在java代码调用kotlin的方法时候使用文件名+kt.方法 3.object 类名 是创建匿名内部类的写法 调用 传入class对象 4.在to ...
- 从零开始学Kotlin第三课
kotlin函数和函数式表达式的简化写法: fun main(args:Array<String>) { var result=add(2,5) println(result) ///简化 ...
- 从零开始学Kotlin第一课
Kotlin的方法: 一个简单的计算器: fun main(args:Array<String>){ //主函数main方法 var a=8; var b=9; println(plus( ...
- 从零开始学Kotlin第五课
函数式编程入门: package EL fun main(args: Array<String>) { var names= listOf<String>("tom& ...
- 从零开始学Kotlin第二课
字符串模板 fun main(args:Array<String>){ //主函数main方法 println(diaryGenerater("天安门")); } // ...
随机推荐
- JS五星级评分效果(类似与淘宝打分效果)
今天晚上研究下 五星级评分效果,类似于淘宝后台评分效果,如下图所示: 思路: 当鼠标移到一颗星的时候 判断当前的索引 当前及当前的索引前面的星星亮起来 每当移到任何一颗星星时候 下面跟随提示 mous ...
- P1550 [USACO08OCT]打井Watering Hole
题目描述 Farmer John has decided to bring water to his N (1 <= N <= 300) pastures which are conven ...
- HDU 1421 搬寝室(经典DP,值得经常回顾)
搬寝室 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status D ...
- SNAT和DNAT
1.SNAT iptables防火墙 Centos6.6 64位 iptables 内网:eth0 172.16.4.1 外网:eth 112.112.112.112/24 当有用户访问公网时,修改用 ...
- abp 将abp项目发布之后挂在IIS上无法访问嵌入资源的问题
在本地调试是能够正常访问到写在另一个程序集中的嵌入资源,但是发布之后 挂在IIS上却不能访问. 整了半天没找到原因.后来发现是发布时配置错误造成的:取消勾选precompile during publ ...
- [Baltic 2011]Lamp BZOJ2346
分析: 建图最短路,比较裸. 我们可以考虑,如果是‘\’那么,左上连右下边权为0,左下连右上边权为1,反之亦然. 卡裸spfa,加点优化能过,我就直接改成的堆优化Dijkstra 附上代码: #inc ...
- Android SDK版本号与API Level 的对应关系-转
Android SDK版本号 与 API Level 对应关系 http://developer.android.com/guide/appendix/api-levels.html Android ...
- 大数据入门第十二天——azkaban入门
一.概述 1.azkaban是什么 通过官方文档:https://azkaban.github.io/ Azkaban is a batch workflow job scheduler create ...
- 20155235 《网络攻防》 实验五 MSF基础应用
20155235 <网络攻防> 实验五 MSF基础应用 实验内容 一个主动攻击实践,如ms08_067; (1分) 一个针对浏览器的攻击,如ms11_050:(1分) 一个针对客户端的攻击 ...
- tf tensor 输出
在学习TensorFlow的过程中,我们需要知道某个tensor的值是什么,这个很重要,尤其是在debug的时候.也许你会说,这个很容易啊,直接print就可以了.其实不然,print只能打印输出sh ...