java实现kotlin接口_Kotlin 接口

Kotlin 中的接口与Java类似,但是它允许有默认实现。这一点与Java 8有些相近,JDK8及以后,允许我们在接口中定义static方法和default方法。

interface MyInterface {

fun method1();

fun result():Int

fun doIt(){

print("do it")

}

}

接口的实现

一个类或者对象可以实现一个或多个接口。

class DefaultImpl :MyInterface{

override fun result(): Int {

return 0;

}

override fun method1() {

print("override method 1")

}

}

接口中的属性

接口中的属性只能是抽象的,不允许初始化值

接口不会保存属性值,实现接口时,必须重写属性

interface MyInterface{

var name:String //name 属性, 抽象的

}

class MyImpl:MyInterface{

override var name: String = "runoob" //重载属性

}

Demo

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

C 只实现了,只需要重写抽象方法bar().而class D则实现了A,B,而A,B都有方法

foo(),bar(),所以都需要重写,用以指定D如何实现。这与继承中有多个相同方法的处理一样。

欢迎加入学习交流群569772982,大家一起学习交流。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值