从零开始学Kotlin基础篇系列文章

Kotlin中的超类Any

  • Kotlin 中所有类都继承超类 Any 类
   class demo6 //默认继承超类Anyclass 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}

转载于:https://www.cnblogs.com/shen-hua/p/8325330.html

从零开始学Kotlin-类的继承(6)相关推荐

  1. 从零开始学 Kotlin 之「2」数据类型

    前言 大家好,这里是「从零开始学 Kotlin 之『2 』数据类型」,本文首发于公众号「Binguner」,欢迎前往大家关注.我会每周分享一些关于 Android 和其他方向的技术干货或一些关于认知的 ...

  2. 从零开始学 Kotlin

    课程简介 这是一门 Kotlin 语言从零基础到提高的教程,主要内容包括:Kotlin 语法基础.数据类型.字符串.运算符.程序流程控制.函数.高阶函数.Lambda 表达式.函数式编程 API.面向 ...

  3. 【Kotlin】Kotlin 类的继承 三 ( super 关键字使用 | super@ 外部调用父类方法 | 子类选择性调用 父类 / 接口 方法 super )

    文章目录 I . 子类调用父类总结 II . 子类调用父类方法 ( super ) III . 子类内部类调用父类方法 ( super@ ) IV . 子类选择调用不同的 父类 / 接口方法 ( su ...

  4. 【Kotlin】Kotlin 类的继承 一 ( 类继承基本方式 | final 关键字 | 子类主构造函数 | 子类次构造函数 )

    文章目录 I . 类继承基本方式 II . 使用 final 禁止类继承 / 方法重写 III . 父类没有主构造函数 IV . 父类有主构造函数 V . 父类构造函数与子类构造函数总结 I . 类继 ...

  5. 【Kotlin】Kotlin 类的继承 二 ( 属性覆盖 | 属性覆盖的四种情况 | 常量 / 变量 属性覆盖 | 子类初始化与属性覆盖 )

    文章目录 I . 属性覆盖基本方式 II . 属性覆盖的四种情况 III . 常量 ( val ) / 变量 ( var ) 属性覆盖 IV . 子类初始化时考虑覆盖属性的使用 I . 属性覆盖基本方 ...

  6. python定义一个student类_从零开始学Python-Day38-类和实例

    原标题:从零开始学Python-Day38-类和实例 面向对象编程中最重要的概念就是类(Class)和实例(Instance),其中"类"是抽象的模板,"实例" ...

  7. 【从零开始学Spring笔记】工厂类

    大家可以关注作者的账号,关注从零开始学Spring笔记文集.也可以根据目录前往作者的博客园博客进行学习.本片文件将基于黑马程序员就业班视频进行学习以及资料的分享,并记录笔记和自己的看法.欢迎大家一起学 ...

  8. 17、Spring Boot普通类调用bean【从零开始学Spring Boot】

    转载:http://blog.csdn.net/linxingliang/article/details/52013017 我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个 ...

  9. Kotlin学习笔记 第二章 类与对象 第一节类与继承(补)

    参考链接 Kotlin官方文档 Kotlin docs | Kotlin 本系列为参考Kotlin中文文档 kotlin官方文档2020版.pdf-其它文档类资源-CSDN下载 第二章 第一节 类与继 ...

最新文章

  1. python 开发版-高性能、低成本、支持MicroPython开发板有哪些?
  2. 小月金嗓再现经典版迟来的爱
  3. 网页渲染的颜色竟然和设定值的不同!Chrome 61+色差解决办法
  4. 感量越大抑制频率约低_脉冲信号是什么?它与频率,占空比,正、负逻辑间是什么关系?...
  5. excel range 判断日期型_为什么精英都是Excel控?
  6. 40张图揭秘,「键入网址发生了什么」
  7. 关于Feign的几个问题
  8. c语言上机及答案,C语言上机练习题及答案
  9. CTU 2019 Open Contest I.SixPack (WA39)
  10. 【matlab安装】手把手图文并茂安装matlab2021(win10版)
  11. IEEE会议论文模板下载
  12. HTTPS 加密、证书、签名与握手
  13. 【Other】千字文 硬笔 楷书 字帖
  14. JAVA版12306抢票工具
  15. yaml及使用PyYaml操作yaml文件详解
  16. 二维码是如何设计出来的?
  17. 小步快跑是这样玩的(下)
  18. 高通Camera驱动(2)-- openinitialize
  19. 海外直播、聊天交友APP的开发及上架GooglePlay体验【Compose版】
  20. 经典激光雷达SLAM系统:LeGO-LOAM

热门文章

  1. mac系统maven spring mvc小试牛刀
  2. MVC基础知识2——过滤器的使用(Filter)
  3. 关于SQL语句中分号的问题
  4. C++ primer: C++标准库中vector类模板
  5. HDU 1027 全排列
  6. Linux常见问题三则:Executable Path Is Not Absolute
  7. 【OpenCV】基本数据类型
  8. python连续写入文件操作_Python实现的读取文件内容并写入其他文件操作示例
  9. angular for 停顿几秒后继续执行_Java 循环结构 for, while 及 do…while
  10. vscode为各自项目添加launch和setting