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

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

abstract class Employee (val firstName: String, val lastName: String) {
    abstract fun earnings(): Double
}

这是由其他 class 扩展的

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

    fun fullName(): String {
        return lastName + " " + firstName;
    }
}

同样的接口

class Result
class Student 

interface StudentRepository {
    fun getById(id: Long): Student
    fun getResultsById(id: Long): List<Result>
}

接口实现

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

    override fun getById(id: Long): Student {
        // do implementation
    }
}

参考方案

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

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

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

为什么我不能在Java中重写方法wait()? - java

Improve this question 我在类wait()中找到了方法Object。这是最终的,这意味着该方法不能被覆盖。有什么想法为什么是最终的? 参考方案 @Flavio-这实际上是一个很好的问题。当然,您不能覆盖它的原因是设计师将其“确定为最终”。做出此决定的一些潜在原因:您不希望人们弄乱基本类(“对象”类)上基本操作的语义。由于它是“最终的”,因…

Web应用程序上的恶意用户是否可以操纵Web应用程序前端发送的输入(在表单数据旁边)? - java

Web应用程序上的恶意用户是否可以通过任何可能的方式来操纵Web应用程序前端发送的输入(当然,这不是在谈论FORM DATA),但是发送的请求例如当我允许他编辑他的个人资料或他的内容时,他可能会操纵ID(userId或contentId),从而可能恶意地对其他用户的内容进行邪恶?这些输入固定在网页上并且不可编辑,但用户仍然可以操纵它们吗?用户是否可能以这种方…

PHP或Java中的WCMS(适用于Java开发人员)? - java

在我公司,我们是一个Java开发人员团队。对于项目,我们需要首先选择一个Web内容管理系统(wcms)。我们可以选择一个php吗?我们是否将不得不学习php,因为我们的客户有一些特殊需求,所以我们可能不得不插入我们自己的功能...还是可以在Java中添加插件并找到连接它们的方法?这样做很普遍吗?考虑到我们的时间,我们负担不起学习php您认为我们最好转向Jav…

什么时候在Hibernate中调用flush()和commit()? - java

我有以下情况: openSession() tx = session.beginTransaction(); try { ... session.saveOrUpdate(obj_1); ... session.saveOrUpdate(obj_2); ... session.saveOrUpdate(obj_3); session.flush(); tx.…

如果没有它,为什么还要使用collect(Collectors.toList())? - java

我在许多Java 8参考资料和示例中都看到了以下代码:List <Integer> l = Arrays.asList(7, 3, 9, 8, 6, 5, -1, -100); l.stream().filter(y -> y <l.get(0)).collect(Collectors.toList()). forEach(Syste…