Kotlin学习笔记-4 --- 继承

文章参考

如果一个类要被继承,要用 open 关键字进行修饰

  • 不可继承
class Base {

}
  • 可继承
open class Base {

}

1、Any类

  • Kotlin 中所有类都继承 Any 类,它是所有类的超类
  • 对于没有超类型声明的类是默认超类
  • Any 默认提供了三个函数 :equals() 、hashCode()、toString()

2、构造函数

  • 基类
open class Person constructor(name: String, age: Int) {

    var mName: String = name
    var mAge: Int = age

    init {
        Log.i("TAG_ZLZ", "------ 基类主构造函数 : $mName    $mAge")
    }
}
  1. 子类无主构造函数
class Student : Person {

    var mId: String = ""

    constructor(id: String, name: String, age: Int) : super(name, age) {
        mId = id
        Log.i("TAG_ZLZ", "------ 子类次构造函数 : $mId    $mName    $mAge")
    }
}
val student = Student("201607232", "赵一晨", 20)

在这里插入图片描述

  1. 子类有主构造函数
class Student constructor(id: String, name: String, age: Int) : Person(name, age) {

    var mId: String = id

    init {
        Log.i("TAG_ZLZ", "------ 子类主构造函数 : $mId   $mName    $mAge")
    }


    constructor(id: String) : this(id, "xxx", 0) {
        Log.i("TAG_ZLZ", "------ 子类次构造函数 : $mId   $mName    $mAge")
    }
}
Log.i("TAG_ZLZ", "------ s1 ------")
val s1 = Student("201607232", "赵一晨", 20)
Log.i("TAG_ZLZ", "------ s2 ------")
val s2 = Student("202100123")

在这里插入图片描述

3、重写

  1. 方法重写
open class Base {

    open fun disply() {
        Log.i("TAG_ZLZ", "这是基类")
    }
}
class Sub : Base() {

    override fun disply() {
        super.disply()
        Log.i("TAG_ZLZ", "这是子类")
    }
}
val base = Base()
base.disply()
val sub = Sub()
sub.disply()

在这里插入图片描述

  1. 属性重写
    属性重写使用 override 关键字
    每一个声明的属性都可以通过 : (1)初始化程序 (2)getter方法 被重写
open class Base {

    open var x: Int = 0
    open var str: String = ""
        set(value) {
            field = if (TextUtils.isEmpty(value.toString())) {
                "Base"
            } else {
                value
            }
        }

    fun showBase() {
        Log.i("TAG_ZLZ", "基类 $x    $str")
    }
}
class Sub : Base() {

    override var x: Int = 1
    override var str: String = ""
        set(value) {
            field = if (TextUtils.isEmpty(value.toString())) {
                "Sub"
            } else {
                value
            }
        }

    fun showSub() {
        Log.i("TAG_ZLZ", "子类 $x    $str")
    }

}
val base = Base()
base.showBase()
val sub = Sub()
sub.showSub()

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KillerNoBlood

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值