接口是用于实现多态编程的重要组成部分
Kotlin与Java一样,单继承多实现,我们可以在接口中定义一些抽象方法,任何由具体的类去实现
创建Study接口,并添加几个相关函数:
interface Study {
fun readBook()
fun doHomeWork()
}
让Student去实现Study接口:
class Student(name: String, age: Int) : Person(name, age), Study {
override fun readBook() {
print("$name is reading")
}
override fun doHomeWork() {
print("$name is doing")
}
}
不同于Java中用extends和implements来完成继承和实现,Kotlin中统一使用冒号,中间用逗号分隔
上述代码表示Student继承了Person类同时实现了Study接口,Study后面不需要加括号,因为他没有构造函数可去调用
Kotlin中使用override关键字来重写或者实现父类的接口中的函数,并且允许对接口中定义的函数进行默认实现(jdk1.8之后也支持这个功能了)
函数的可见性修饰符
修饰符 | Java | Kotlin |
---|---|---|
public | 所有类可见 | 所有类可见(默认) |
private | 当前类可见 | 当前类可见 |
protected | 当前类、子类和同一包路径下的类可见 | 当前类和子类可见 |
default | 同一包路径下的类可见(默认) | 无 |
internal | 无 | 同一模块中的类可见 |
Java中的可见性修饰符:public、protected、private和default(什么都不写)
Kotlin中的可见性修饰符:public、private、protected和internal
需要使用哪种修饰符时,直接定义在fun关键字前面即可
private作用相同
public作用相同,但是在Kotlin中是默认项
protected,Java:对当前类、子类和同一包路径下的类可见,Kotlin:只对当前类和子类可见
internal:只对同一模块中的类可见
欢迎关注这个不是技术号的公众号,我们聊聊别的。