Android 学习之《第一行代码》第三版 笔记Kotlin 继承时的括号到底写不写
Posted Nicholas_hzf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 学习之《第一行代码》第三版 笔记Kotlin 继承时的括号到底写不写相关的知识,希望对你有一定的参考价值。
内容学习来源:
第 2 章 探究新语言,快速入门 Kotlin编程
目录
一、问题来源
Kotlin 作为 android 开发的一级语言,在现阶段是我们必须要掌握的,工作之前从未接触过,入职前也只是草草翻阅了一遍《Kotlin 崛起次世代 Android 开发》一书,感觉远远不够,但由于时间原因,只好边工作边学习,刚开始的时候,AS 的自动转换功能,给了很大的帮助,可是,当自己要写一些继承类相关的代码时,出现了一个困扰我的问题,那就是:子类继承父类时,括号到底写不写,它代表了什么含义,这里的“括号”既是指子类名称后的括号,又是指父类名称后面的括号,如:
二、继承与构造函数
(一)前置知识
- Java 继承特性中有一个规定:子类中的构造函数必须调用父类中的构造函数。这一规定,对于 Kotlin 来说也是需要遵守的,由于 Kotlin 中的主构造函数没有函数体,所以主构造函数调用父类的构造函数的任务就落在了后面的括号上
- 对于一般的类来说,在 Java 中,构造函数没有主次之分,但是至少有一个,而在 Kotlin 中,有主次构造函数之说,主构造函数没有函数体,是一个仅有参数部分的构造函数,次构造函数使用 constructor 关键字进行定义(该关键字也可以用来定义主构造函数),对于 Kotlin 来说也是至少有一个构造函数,可以是主构造函数,也可以是次构造函数
(二)括号代表了什么
- 前面的也就是子类的括号:代表这个类的主构造函数
- 后面的也就是父类的括号:代表子类的主构造函数调用它继承的父类的构造函数(可能是父类的主构造也可能是父类的次构造)
(三)继承时,什么时候不要加括号
1. 子类的括号不用写:没有主构造函数或者不显式声明主构造函数,使用默认的空参主构造函数
// 没有显示声明主构造函数,但有次级构造函数
// 由于声明了一个次级构造函数,所以可以没有主构造函数
class Student1: Person2
constructor(info: String) : super("Zhang san",20)
// 没有显式声明主构造函数,也没有次级构造函数
// 这种情况,默认有一个空参的主构造函数,可以不显式调用空参主构造函数
class Student2: Person2("Nicholas",20)
2. 父类的括号不用写:没有主构造函数,父类的括号就不用写
// 没有显示声明主构造函数,但有次级构造函数
// 由于声明了一个次级构造函数,所以可以没有主构造函数
// 没有主构造函数,父类的括号就不用写
// 因为父类的括号代表了子类的主构造函数调用它继承的父类的构造函数
class Worker: Person2
constructor(info: String) : super("Nicholas",20)
constructor(name : String,age : Int,info : String) : super()
整理学习自郭霖大佬的《第一行代码》
持续学习Android中,如有错误请批评指正!
以上是关于Android 学习之《第一行代码》第三版 笔记Kotlin 继承时的括号到底写不写的主要内容,如果未能解决你的问题,请参考以下文章