从零开始学Kotlin-类的继承(6)
从零开始学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)相关推荐
- 从零开始学 Kotlin 之「2」数据类型
前言 大家好,这里是「从零开始学 Kotlin 之『2 』数据类型」,本文首发于公众号「Binguner」,欢迎前往大家关注.我会每周分享一些关于 Android 和其他方向的技术干货或一些关于认知的 ...
- 从零开始学 Kotlin
课程简介 这是一门 Kotlin 语言从零基础到提高的教程,主要内容包括:Kotlin 语法基础.数据类型.字符串.运算符.程序流程控制.函数.高阶函数.Lambda 表达式.函数式编程 API.面向 ...
- 【Kotlin】Kotlin 类的继承 三 ( super 关键字使用 | super@ 外部调用父类方法 | 子类选择性调用 父类 / 接口 方法 super )
文章目录 I . 子类调用父类总结 II . 子类调用父类方法 ( super ) III . 子类内部类调用父类方法 ( super@ ) IV . 子类选择调用不同的 父类 / 接口方法 ( su ...
- 【Kotlin】Kotlin 类的继承 一 ( 类继承基本方式 | final 关键字 | 子类主构造函数 | 子类次构造函数 )
文章目录 I . 类继承基本方式 II . 使用 final 禁止类继承 / 方法重写 III . 父类没有主构造函数 IV . 父类有主构造函数 V . 父类构造函数与子类构造函数总结 I . 类继 ...
- 【Kotlin】Kotlin 类的继承 二 ( 属性覆盖 | 属性覆盖的四种情况 | 常量 / 变量 属性覆盖 | 子类初始化与属性覆盖 )
文章目录 I . 属性覆盖基本方式 II . 属性覆盖的四种情况 III . 常量 ( val ) / 变量 ( var ) 属性覆盖 IV . 子类初始化时考虑覆盖属性的使用 I . 属性覆盖基本方 ...
- python定义一个student类_从零开始学Python-Day38-类和实例
原标题:从零开始学Python-Day38-类和实例 面向对象编程中最重要的概念就是类(Class)和实例(Instance),其中"类"是抽象的模板,"实例" ...
- 【从零开始学Spring笔记】工厂类
大家可以关注作者的账号,关注从零开始学Spring笔记文集.也可以根据目录前往作者的博客园博客进行学习.本片文件将基于黑马程序员就业班视频进行学习以及资料的分享,并记录笔记和自己的看法.欢迎大家一起学 ...
- 17、Spring Boot普通类调用bean【从零开始学Spring Boot】
转载:http://blog.csdn.net/linxingliang/article/details/52013017 我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个 ...
- Kotlin学习笔记 第二章 类与对象 第一节类与继承(补)
参考链接 Kotlin官方文档 Kotlin docs | Kotlin 本系列为参考Kotlin中文文档 kotlin官方文档2020版.pdf-其它文档类资源-CSDN下载 第二章 第一节 类与继 ...
最新文章
- python 开发版-高性能、低成本、支持MicroPython开发板有哪些?
- 小月金嗓再现经典版迟来的爱
- 网页渲染的颜色竟然和设定值的不同!Chrome 61+色差解决办法
- 感量越大抑制频率约低_脉冲信号是什么?它与频率,占空比,正、负逻辑间是什么关系?...
- excel range 判断日期型_为什么精英都是Excel控?
- 40张图揭秘,「键入网址发生了什么」
- 关于Feign的几个问题
- c语言上机及答案,C语言上机练习题及答案
- CTU 2019 Open Contest I.SixPack (WA39)
- 【matlab安装】手把手图文并茂安装matlab2021(win10版)
- IEEE会议论文模板下载
- HTTPS 加密、证书、签名与握手
- 【Other】千字文 硬笔 楷书 字帖
- JAVA版12306抢票工具
- yaml及使用PyYaml操作yaml文件详解
- 二维码是如何设计出来的?
- 小步快跑是这样玩的(下)
- 高通Camera驱动(2)-- openinitialize
- 海外直播、聊天交友APP的开发及上架GooglePlay体验【Compose版】
- 经典激光雷达SLAM系统:LeGO-LOAM
热门文章
- mac系统maven spring mvc小试牛刀
- MVC基础知识2——过滤器的使用(Filter)
- 关于SQL语句中分号的问题
- C++ primer: C++标准库中vector类模板
- HDU 1027 全排列
- Linux常见问题三则:Executable Path Is Not Absolute
- 【OpenCV】基本数据类型
- python连续写入文件操作_Python实现的读取文件内容并写入其他文件操作示例
- angular for 停顿几秒后继续执行_Java 循环结构 for, while 及 do…while
- vscode为各自项目添加launch和setting