Kotlin

Kotlin接口与SAM函数,以及可见性修饰符

2021-03-29  本文已影响0人  漆先生

一、Kotlin接口

Kotlin 的接口可以既包含抽象⽅法的声明也包含实现。与抽象类不同的是,接口⽆法保存状态。它可以有属性但必须声明为抽象或提供访问器实现。

1.实现接口

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

2.接口中的属性

接口中声明的属性要么是抽象的,要么提供访问器的实现。在接口中声明的属性不能有幕后字段(backing field)

3.接口继承

⼀个接口可以从其他接口派生,从而既提供基类型成员的实现也声明新的函数与属性。基类没有方法体时默认为抽象,派生类一定要实现。

4.解决覆盖冲突

采用super<基类>.method()的方式。选择性使用基类方法

二、函数式(SAM)接口

只有⼀个抽象方法的接口称为函数式接口或 SAM(单⼀抽象⽅法)接口。函数式接口可以有多个非抽象成员,但只能有⼀个抽象成员。

1.SAM 转换

函数式接口通过 lambda 表达式实现 SAM 转换

interface IntPredicate {
    fun accept(i: Int): Boolean
}

//不使用转换
val isEven = object : IntPredicate {
    override fun accept(i: Int): Boolean {
        return i % 2 == 0
    }
}
//SAM转换(但是编译器报错,后面有待再次验证)
val isEven = IntPredicate { it % 2 == 0 }

2.函数式接⼝与类型别名比较

三、可见性修饰符

这四个可可性修饰符:private 、protected 、internal 和 public 。
如果没有显式指定修饰符的话,默认可见性是 public 。internal 是相同模块可见,其它同java

上一篇 下一篇

猜你喜欢

热点阅读