2020-08-12

Kotlin 继承与构造函数

继承

Kotlin 中规定任何一个非抽象类默认都是不可被继承的 ,相当于Kotlin 中的 val 关键字被修饰类和变量是不可变的 , Java 里声明的 final
他遵循着
1.不是专门为继承而设计的,就无法预知子类如何被实现,存在未知的风险,应该主动加上 final 声明,禁止被继承
2.所有非抽象类是不可以被继承 ,抽象类本身无法创建实例,

  • 当子类去继承才能创建实例 ,因此为了Kotlin创建的类 可以被继承,需要在类前面加"open" 关键字
  • Kotlin 去继承某个类 用 “:” 冒号表示 ,Java 采用extends
主次函数

~ 继承父类后面有一对括号的意义 涉及主次构造函数

Java 中规定 子类中的构造函数必须调用父类中的构造函数
Kotlin 子类调用父类哪个构造函数,通过括号指定

  • 父类后面一对空括号表示 主构造函数初始化时调用父类无参构造函数,此括号不能省略
主构找函数特点 : 没有函数体 ,直接定义在类名后面
  • 参数在创建时传入,无需重新赋值 , 因此将参数可声明为 val
  • 主构造函数中声明 " val 和 var " 的参数会自动转化为该类字段,会造成与父类同名字段冲突 ,因此不用添加
Kotlin 提供 init 结构体 , 便于在主构造函数中编写逻辑
次构造函数

次构造和主构造区别 : 次构函数有函数体
*当既有主次构造函数次构造必须调用主构造 , " this “关键字用来调用主构造 , 次构造通” constructor "

类中只有次构造函数,没有主构造函数继承时规定 :没有主构造,次构造只能调用父构造函数,将" this " 换成" super "
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值