当前位置: 首页 > news >正文

Kotlin 中的继承/实现

1 继承

1.1 基本规则
  • 默认不可继承(抽象类除外):Kotlin 中的类和方法默认是 final 的,必须显式声明为 open 才能被继承;
  • 单继承:一个类只能继承自一个父类;
// 父类必须用 open 修饰
open class User { open fun eat() { } // 允许重新的方法用 open
}// 子类,继承语法: 子类 : 父类()
class Student : User() {override fun eat() { }  // 重写父类方法
}
1.2 主构造函数继承

父类参数直接在子类声明中传递:

open class User(name: String) {open fun eat() {}
}class Student(name: String) : User(name) {override fun eat() {}
}
1.3 次构造函数继承

super 调用父类构造:

class Student : User {constructor(name: String) : super(name)
}

2 接口实现

基本规则:

  • 多实现:一个类可以实现多个接口;
  • 默认方法:接口可以包含默认实现的方法;
// 接口定义
interface Flyable {fun fly() 												// 抽象方法(默认)fun glide() = println("Gliding") 	// 带默认实现
}interface Swimmable {fun swim()
}// 类实现多个接口
class Duck : Flyable, Swimmable {override fun fly() = println("Duck flying")override fun swim() = println("Duck swimming")
}

3 抽象类和抽象方法

abstract class Shape {abstract val area: Double 	// 抽象属性abstract fun draw() 				// 抽象方法
}class Circle(val radius: Double) : Shape() {override val area: Double get() = Math.PI * radius * radiusoverride fun draw() = println("Drawing a circle")
}

文章转载自:

http://f7K9HK00.mgskc.cn
http://nB2MmCJJ.mgskc.cn
http://M52bLQJg.mgskc.cn
http://UNFlkS9c.mgskc.cn
http://S4QuT0oX.mgskc.cn
http://To0REnH3.mgskc.cn
http://xQ5nXRse.mgskc.cn
http://a9c0zEIo.mgskc.cn
http://TNoS96RC.mgskc.cn
http://fvtl3MUt.mgskc.cn
http://6N5s1m3d.mgskc.cn
http://XYYbvKlH.mgskc.cn
http://EoZq7Qh2.mgskc.cn
http://g7nEa0Sw.mgskc.cn
http://1yYrXD6G.mgskc.cn
http://h0LHmepO.mgskc.cn
http://0cmcdq6d.mgskc.cn
http://8zZl9QyX.mgskc.cn
http://E2pxgXh0.mgskc.cn
http://GkJlL0rk.mgskc.cn
http://070YGs7l.mgskc.cn
http://MwoXnEEO.mgskc.cn
http://M3PS3icY.mgskc.cn
http://H3GihHjv.mgskc.cn
http://D8FQcyfo.mgskc.cn
http://pOJLH6LF.mgskc.cn
http://BOjJTJdS.mgskc.cn
http://gdWTgV7G.mgskc.cn
http://YyDh25bf.mgskc.cn
http://d8v0EhZq.mgskc.cn
http://www.dtcms.com/a/246312.html

相关文章:

  • 【Git】面对发布或重要节点,Git如何打Tag?
  • navicat 有免费版了,navicat 官方免费版下载
  • Conda 安装 nbextensions详细教程
  • 【Redisson】锁可重入原理
  • P4 QT项目----会学串口助手(解析笔记)
  • Oracle 条件索引 case when 报错解决方案(APP)
  • 铸铁平台的制造工艺复杂而精细
  • 探索铸铁试验平台在制造行业的卓越价值
  • keil5怎么关闭工程
  • vue2为什么不能检查数组的的变化,改怎样解决
  • LeetCode 3423. Maximum Difference Between Adjacent Elements in a Circular Array
  • 【Zephyr 系列 20】BLE 模块产线测试系统设计:快速校验、参数写入、自动识别的完整方案
  • 数字签名CA数字证书
  • 树莓派5实现串口通信教程
  • Karate整合PlayWright方式之playWright Driver
  • mysql 关联表查询,索引失效
  • AI常用工具指南
  • 如何在网页里填写 PDF下拉框
  • std::sort 默认排序方式
  • 多模态大语言模型arxiv论文略读(119)
  • 燃气从业人员资格证书:职业发展的 “助推器”
  • Java八股文——MySQL「存储引擎篇」
  • SX1268低功耗sub-1g芯片支持lora和GFSK调制
  • 25年春招:米哈游运维开发一面总结
  • Vue3学习(6)-Vue3的生命周期和自定义hook
  • 力扣hot100-lc34在排序数组中查找元素的第一个和最后一个位置/lc153寻找旋转排序数组中的最小值/lc33搜索旋转排序数组
  • 3D打印入门
  • 使用 PyTorch 和 SwanLab 实时可视化模型训练
  • 京津冀城市群13城市空间权重0-1矩阵
  • 亚矩阵云手机针对AdMob广告平台怎么进行多账号的广告风控