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中,如有错误请批评指正!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值