如何区分kotlin的类继承(在Java中扩展)和接口实现(在中的实现),此处kotlin对这两者都使用(:)?

Cra*_*yKP 3 java kotlin

当我在Kotlin项目的中间工作时,我感到困惑,例如子类是实现另一个父类还是实现接口?就像我正在从jar中使用一些我不太了解的接口和类一样,有人会向我解释解决此问题的方法,因为我是kotlin的新手。
例如:
一个类定义

abstract class Employee (val firstName: String, val lastName: String) {
    abstract fun earnings(): Double
}
Run Code Online (Sandbox Code Playgroud)

这是由其他班级扩展的

abstract class Employee (val firstName: String, val lastName: String) {
    // ... 

    fun fullName(): String {
        return lastName + " " + firstName;
    }
}
Run Code Online (Sandbox Code Playgroud)

同样的接口

class Result
class Student 

interface StudentRepository {
    fun getById(id: Long): Student
    fun getResultsById(id: Long): List<Result>
}
Run Code Online (Sandbox Code Playgroud)

接口实现

class StudentLocalDataSource : StudentRepository {
    override fun getResults(id: Long): List<Result> {
       // do implementation
    }

    override fun getById(id: Long): Student {
        // do implementation
    }
}
Run Code Online (Sandbox Code Playgroud)

Swe*_*per 8

在Kotlin中,要从类继承,您必须编写其主要构造函数,因此,您始终会看到父类,后跟(),有时里面有东西。

接口不需要这个。您只需编写接口的名称即可。

因此,如果在名称后看到方括号,则为父类。否则,它是一个接口。