Kotlin接口详解
时间:2026-08-13 | 作者:火苗实验室 | 阅读:0Kotlin 接口与 Ja va 8 类似,使用 interface 关键字定义接口,允许方法有默认实现:
interface MyInterface {
fun bar() // 未实现
fun foo() { //已实现
// 可选的方法体
println("foo")
}
}
实现接口
一个类或者对象可以实现一个或多个接口。
class Child : MyInterface {
override fun bar() {
// 方法体
}
}
实例
interface MyInterface {
fun bar()
fun foo() {
// 可选的方法体
println("foo")
}
}
class Child : MyInterface {
override fun bar() {
// 方法体
println("bar")
}
}
fun main(args: Array) {
val c = Child()
c.foo();
c.bar();
}
输出结果为:
foo
bar
接口中的属性
接口中的属性只能是抽象的,不允许初始化值,接口不会保存属性值。
实现接口时,必须重写属性:
interface MyInterface{
var name:String //name 属性, 抽象的
}
class MyImpl:MyInterface{
override var name: String = "runoob" //重写属性
}
实例
interface MyInterface {
var name:String //name 属性, 抽象的
fun bar()
fun foo() {
// 可选的方法体
println("foo")
}
}
class Child : MyInterface {
override var name: String = "runoob" //重写属性
override fun bar() {
// 方法体
println("bar")
}
}
fun main(args: Array) {
val c = Child()
c.foo();
c.bar();
println(c.name)
}
输出结果为:
foo
bar
runoob
函数重写
实现多个接口时,可能会遇到同一方法继承多个实现的问题。例如:
实例
interface A {
fun foo() { print("A") } // 已实现
fun bar() // 未实现,没有方法体,是抽象的
}
interface B {
fun foo() { print("B") } // 已实现
fun bar() { print("bar") } // 已实现
}
class C : A {
override fun bar() { print("bar") } // 重写
}
class D : A, B {
override fun foo() {
super.foo()
super.foo()
}
override fun bar() {
super.bar()
}
}
fun main(args: Array) {
val d = D()
d.foo();
d.bar();
}
输出结果为:
ABbar
在这个例子里,接口 A 和 B 都声明了 foo() 和 bar(),只是实现情况不一样:A 实现了 foo(),B 实现了 bar()。
由于 C 是一个实现了 A 的具体类,所以它必须重写 bar(),把这个抽象方法补上。
不过,换个角度看,如果从 A 和 B 派生出 D,情况就没那么简单了。
此时不仅要实现多个接口继承下来的所有方法,还得明确说明,D 到底应该按什么方式去实现它们。
这个规则,既适用于继承单个已实现方法(bar())的场景,也适用于继承多个已实现方法(foo())的场景。
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- Kotlin基础语法:从包定义到函数声明的核心指南
- 时间:2026-08-27
-
- 协程进阶:协作、互斥与共享状态管理
- 时间:2026-08-27
-
- Kotlin 协程快速入门:核心定义、特性与实战指南
- 时间:2026-08-27
-
- Kotlin If表达式:告别嵌套,实现简洁赋值
- 时间:2026-08-27
-
- Kotlin流程控制精讲:for循环与区间(Range)的优雅结合
- 时间:2026-08-27
-
- Kotlin 流程控制:while 与 do/while 循环详解
- 时间:2026-08-27
-
- Kotlin/Js For Harmony:ArkTs开发工具套件详解
- 时间:2026-08-27
-
- Kotlin 类基础:深入解析主构造函数与次构造函数
- 时间:2026-08-27
精选合集
更多大家都在玩
大家都在看
更多-
- 糖尿病完全不能吃糖吗
- 时间:2026-09-15
-
- 蚂蚁庄园小课堂2026年9月16日最新题目答案
- 时间:2026-09-15
-
- 小鸡答题今天的答案是什么2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园每日答题答案2026年9月16日
- 时间:2026-09-15
-
- 以下哪种粮食是酿造绍兴黄酒的主要原料 蚂蚁庄园今日答案9月16日
- 时间:2026-09-15
-
- 劝学名句“及时当勉励,岁月不待人”出自哪位诗人 蚂蚁庄园今日答案9.16
- 时间:2026-09-15
-
- 蚂蚁庄园今天答题答案2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园答题今日答案2026年9月16日
- 时间:2026-09-15
