类的继承

作者: 码农修行之路 | 来源:发表于2020-11-21 16:37 被阅读0次

类的成员:
(1). 构造函数和初始化代码块
(2). 属性
(3). 函数
(4). 嵌套类和内部类
(5). 对象的声明

  • 继承 在KT中所有的类都有一个共同的超类 Any 这对于没有超类声明的类是默认超类 也就是说隐式继承
class Father: Any()

而KT Any只有三个函数 equeals() hashCode() toString() 如果想要使用Java中的Object的其它成员:

  1. 可以扩展函数
  2. 也可以强转Object
fun main() {
    var father = Father()
    (father as Object).wait(1000)
}

class Father: Any()
fun main() {
    var father = Father()
    // wait()/notify()
    (father as Object).wait(1000)
    (father as Object).notify()
    // getClass() 获取对象的java类
    father.javaClass
    father::class.java
    // clone() 覆盖方法clone() 需要继承Cloneable() 谨慎修改clone()
    Son()
    // finalize() 覆盖 只需要简单的声明就好 不需要override关键字

}

class Father : Any()
class Son : Cloneable {
    override fun clone(): Any {
        return super.clone()
    }
}
class A{
    // java规则 finalize() 不能是private的
    protected fun finalize() {
        // 终止化逻辑
    }
}

上节我们简单介绍了继承,那么我们在此说一下super关键字 调用父类的成员变量和和成员方法
super.成员变量
super.成员方法
如果子类重写父类的方法 完全重写 就不要super 可以在子类重写的方法中干自己想要的事情

抽象类

  • 抽象和继承有异曲同工之妙 不是完全一样
  • 定义一些类的时候 往往是需要定义一些方法来描述该类的行为特征 但有时候这些方法的实现方式是无法确定的(什么是无法确定? 也就是说我定义两种动物 一种小狗 另一种小猫 它们都有吃的这个动作行为 那么它们喜欢吃的东西可能就不一样) 此时就可以将其定义为抽象方法 抽象方法没有方法体 只有在需要它的地方实现其方法体
  • 当一个类中包含了抽象方法 那么这个类必须是抽象类 用abstrct关键字修饰
abstract class An {
    // 抽象函数没有方法体
    abstract fun eat()
    abstract fun work()
    fun runTo() {
        // 普通函数
    }
}
  • 抽象类中的方法可以是抽象的、也可以是非抽象的、也可以都是非抽象的
  • 抽象类是不能被实例化的 因为抽象类中可能包含抽象方法 抽象方法又都是没有方法体的 不可以被调用
  • 抽象类被继承 直接可以在子类中实现抽象类中的方法
  • abstract修饰的类(抽象类)可以直接被继承 不需要open关键字修饰为可继承 也就是默认能被继承

接口

  • 和抽象类相似 但是抽象类中有抽象和非抽象的函数 如果一个抽象类中的函数都是抽象的 那么也可以用接口进行表示 所以说接口中的函数都是抽象的 一个类中所有的函数都是抽象的 那它不一定是抽象类
  • 接口中的函数都不能被实现的 接口需要interface关键字修饰 其函数默认是abstract
  • 接口可以多实现 接口之间可以相互继承
  • 一个类在继承另一个类的同时还可以实现接口 继承的类和实现的接口都可以放在(:)冒号后面

相关文章

  • 一阶段day16-01面向对象

    Python中类支持继承,并且支持多继承 一、继承 1、什么是继承 父类(超类):被继承的类子类:继承父类的类继承...

  • 2018-10-19面向对象和pygame

    类的继承 python中的类支持继承,并且支持多继承 1.什么是继承 父类(超类):被继承的类子类:继承的类继承就...

  • python零基础13:类的继承和定制

    类的定制和继承是什么? 类的继承 类的定制 类的继承要怎么写? 继承基础语法 继承之多层继承 继承的多重继承 类的...

  • Day16总结:面向对象和pygame

    类的继承 python中类支持继承,并且支持多继承 1.什么是继承 父类(超类):被继承的类子类:去继承父类的类继...

  • python 面向对象和pygame

    一、类的继承 python中类支持继承,并且支持多继承 1.什么是继承父类(超类):被继承的类子类:去继承父类的类...

  • day16

    类的继承 python中的类支持继承,并且支持多继承() 1.什么是继承 父类(超类):被继承的类子类:去继承的类...

  • 10.19 day16面向对象和pygame

    1.类的继承python中类 支持继承,并且支持多继承()1.什么是继承父类(超类):被继承的类 子类:继承的类,...

  • 2018-10-19继承、重写、内存管理和认识pygame

    一、类的继承 Python中类支持继承,并且支持多继承 1、什么是继承 父类(超类):被继承的类子类:去继承父类的...

  • day16

    一、类的继承python中类支持继承,并且支持多继承 1.什么是继承父类(超类):被继承的类子类:去继承父类的类继...

  • Day16-面向对象和pygame

    一、类的继承 python中类支持继承,并且支持多继承 1.什么是继承 父类(超类):被继承的类 子类:去继承父类...

网友评论

    本文标题:类的继承

    本文链接:https://www.haomeiwen.com/subject/yqzsiktx.html