当前位置: 首页 > 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")
}

相关文章:

  • 【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)
  • 常州网站制作报价/优势的seo网站优化排名
  • wordpress 防刷新/宁波seo外包公司
  • 仿唯品会wordpress商城主题/windows优化大师有必要安装吗
  • 可以做国外购物的网站/图片优化是什么意思
  • 中小微企业查询网站/seo全网推广
  • 怎么把电脑当服务器做网站/全网营销骗局揭秘