Kotlin入门-父子身份更分明,继承篇

在这里插入图片描述

前言

前文讲到,Kotlin中万物皆对象,连《基础数值类型》都不放过。

除了文字版本,也有Xmind版本 github地址

带几个问题吧
① Any 跟object什么区别?
② 子类的初始化顺序如何?
③ super的覆盖规则是什么?
④ 与java对比,kotlin在继承有什么变化?加强了什么?

本文从以下几个方面讲继承

  • 根是Any类
  • 构造函数
  • 重写方法
  • 重写属性
  • 中场小结
  • 派生类初始化顺序
  • 调用超类实现
  • super覆盖规则

根是Any类

首先,Any 不是 java.lang.Object。
在Kotlin中,Any是所有类的超类
如果没有显式声明超类型声明的类,其默认的超类是Any

Any 默认提供了三个函数

  • equals()
  • hashCode()
  • toString()

把超类型 放在冒号 之后

open class Base(p: Int)
class Derived(p: Int) : Base(p)

构造函数

子类有主构造函数

如果子类有主构造函数, 则基类必须在主构造函数中立即初始化。
这话看起来看起来,比较难懂。
先看个范例

open class Person(var name : String, var age : Int, var score : Int){// 基类
}

class Student(name : String, age : Int, var no : String, score : Int) : Person(name, age, score) {
}
// 测试
fun main(args: Array<String>) {
    val s =  Student("wangxueming", 18, "S12346",
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值