インターフェースの定義
kotlin と Java のインターフェイス定義は似ています。
interface Study {
fun doHomework()
fun readBooks()
}
インターフェースの実装
Student で Study インターフェイスを実装するには、Study で宣言されている未実装の関数をすべて実装する必要があります。
class Student(name: String, age: Int) : Person(name, age), Study{
override fun doHomework() {
println("$name is doing homework")
}
override fun readBooks() {
println("$name is reading homework")
}
}
インターフェイスのポリモーフィズムには次のものが使用されます。
fun main() {
val student = Student("lucy", 19)
//student.doHomework()
study(student)
}
fun study(study: Study) {
study.doHomework()
}
//结果:lucy is doing homework
インターフェース関数の実装
Kotlin では、インターフェイスで定義された関数のデフォルト実装が可能です。
interface Study {
fun doHomework(){
println("do homework default implementation")
}
fun readBooks()
}
doHome にはデフォルトの実装があるため、インターフェイス実装クラスでそれを実装する必要はなくなります。
class Student(name: String, age: Int) : Person(name, age), Study{
override fun readBooks() {
println("$name is reading homework")
}
}
次のプログラムを実行します。
fun main() {
val student = Student("lucy", 19)
student.doHomework()
}
//结果:do homework default implementation
可視修飾子
以下は、Java と Kotlin で表示される修飾子の範囲と比較です。
修飾子 | ジャワ | コトリン |
---|---|---|
公共 | すべてのクラスが表示されます | すべてのクラスが表示されます (デフォルト) |
プライベート | 現在のクラスが表示されます | 現在のクラスが表示されます |
保護された | 現在のクラス、サブクラス、および同じパッケージ パスにあるクラスが表示されます。 | 現在のクラスとサブクラスが表示されます |
デフォルト | 同じパッケージ パスにあるクラスが表示されます (デフォルト) | なし |
内部 | なし | 同じモジュール内のクラスが表示されます |