IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Kotlin学习:3.4.类的继承 -> 正文阅读

[移动开发]Kotlin学习:3.4.类的继承

继承

1.必须 open

Java中的类默认都是开放的,如果想类不开放,需要设置 final;Kotlin中的类默认都是final的,如果想开放需要设置open。

类、方法、属性都需要单独设置open,子类才可以覆写

open class 类名{
     ...
     open var/val 属性名 = 属性值
     ...
     open fun 函数名()
     ...
 }

2.使用 :表示继承

Java中使用 extend 表示继承;Kt中使用 :号

3.只继承主构造函数

open class Fruit(p: Int)
class Apple(a: Int) : Fruit(a) {

}

4.主构造和次构造函数都继承

open class Fruit(p: Int) {
    init {
        println("p ==$p")
    }
    constructor(name: String) : this(233)
    constructor(name: String ,p:Int ) : this(p)
}
class Apple : Fruit {

    constructor(p: Int) : super(p)
    constructor(name: String) : super(name)
    constructor(name: String, p: Int) : super(name, p)

}

父类没有主构造函数,只继承次构造函数也这么写

方法重写

1.必须 open

open class Fruit(p: Int) {

    fun log(){

    }

    open fun print(){ //不写open不能重写

    }
}

2.重写


class Apple : Fruit {

    fun log(){ // 错误

    }

    override fun print() {  //正确
        super.print()
    }

}

属性重写

1.不能重写val,可以重写var

open class Fruit(p: Int) {

    open var tag = "父"
    open val clz = "父"

}

class Apple : Fruit {

    override var tag
        get() = super.tag
        set(value) {
            super.tag = value
        }

    override var clz: String
        get() = super.clz
        set(value) {
//            super.clz = value // 错误val不可以动态修改
//  		 clz = value //错误
            println("value = $value")
        }
}

测试

        val apple = Apple("")
        apple.tag = "tag 属性重写"
        apple.print()

输出

2022-02-08 16:16:33.175 7994-7994/com.example.kotlintestdemo I/System.out: tag ==tag 属性重写
2022-02-08 16:16:33.175 7994-7994/com.example.kotlintestdemo I/System.out: clz ==2022-02-08 16:16:33.175 7994-7994/com.example.kotlintestdemo I/System.out: value = 这是子类重写的

2.覆盖

2.1.val 和 var 可以被覆盖成 var

如上重写的栗子,var 覆写成var ,依然支持修改;但是val 重写成var依然不支持修改,只是不报错

open class Fruit(p: Int) {
    open var tag = "父"
    open val clz = "父"
}

class Apple : Fruit {
    override var tag = "子"
    override var clz = "子"
}

2.2.var 不能覆盖成 val

```java
class Apple : Fruit {
    override val tag = "子" // 错误
    override var clz = "子"
}

调用超类

使用 super.

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-02-09 20:49:03  更:2022-02-09 20:51:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 14:39:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码