美文网首页
Kotlin与Java比较:接口

Kotlin与Java比较:接口

作者: 程序引力 | 来源:发表于2018-11-29 23:50 被阅读26次

前言

Kotlin作为JVM系的语言,起源于Java又不同于Java。通过在语言层面比较两者的区别,可以使得开发者能够快速学习,融会贯通。

接口概况

  • Java
    在Java8之前,接口只能包含抽象方法和静态属性。但在Java8之后,在接口中不要求全部是抽象方法,而允许有具体方法的存在,具体分为:default方法与static方法。Java中接口支持多实现(继承)。

  • Kotlin
    在Kotlin的接口中,允许有抽象方法,也允许有具体方法。允许有抽象的属性,也允许提供访问器的属性。接口允许多实现(继承)。

接口定义

  • Java
    在Java8中,其可以定义的内容为:
 public interface JavaInterface {
    static final String str = "a"; //实际上static final都是冗余的。Java接口中属性都是静态常量
    String bar();    //抽象方法
    default String f(){    //默认方法
        return"this is default method";
    }
    static String foo{    //静态方法
        return"this is static method";
    }

从上面的例子中可以看到,Java8之后的接口允许定义默认方法与静态方法,默认方法的作用就是避免了实现该接口的重复代码。即如果有多个类都实现了该接口,并且某一个方法的实现是一样的,那此时就可以把这个方法提升到接口中,并以default修饰,设置为默认方法。静态方法与类中的静态方法一致。

  • Kotlin
    在Kotlin中,接口属性必须为抽象的或者提供访问器的。方法可以是抽象的,也可以有具体实现。
interface KotlinInterface {
    val prop: Int // 抽象的
    val propertyWithImplementation: String
        get() = "foo"    //提供访问器的属性

    fun bar()
    fun foo() {
      // 可选的方法体
    }
}

在接口声明的属性中,不能有幕后字段,即不能引用field.

接口实现

  • Java
    在Java中,实现方法不需添加额外关键字,只需添加方法体具体实现即可。同时建议添加@Override注解。
class JavaChild implements JavaInterface{
    String bar(){
        //xxx
    }
}
  • Kotlin
    Kotlin中实现属性或方法需要添加override关键字,但是与继承类不同,被实现的接口中的属性或方法不用添加open关键字,默认就是open的。
class KotlinChild : KotlinInterface {
    override val prop: Int = 29
    override fun bar() {
        // 方法体
    }
}

接口间继承

  • Java
    在Java中允许接口间继承,即接口B继承接口A,但是用类C去实现接口B。类C需要实现A与B中未实现的所有抽象方法。

  • Kotlin
    Kotlin中的接口间继承规则基本一致。接口间可以继承,最后的实现类只需要实现剩余的抽象方法即可。

相关文章

  • Kotlin与Java比较:接口

    前言 Kotlin作为JVM系的语言,起源于Java又不同于Java。通过在语言层面比较两者的区别,可以使得开发者...

  • Kotlin 接口

    原文地址:Kotlin 接口 Kotlin 接口与 Java 8 类似,使用 interface 关键字定义接口,...

  • Kotlin之类、对象和接口

    Kotlin的类和接口与Java的类和接口是有一定的区别的。Kotlin的接口是可以包含属性声明。Kotlin默认...

  • 第四章 类、对象和接口

    Kotlin的类和接口和Java还是有一些区别的。例如:接口可以包含属性声明。与Java不同,Kotlin的声明默...

  • Kotlin基础(4)-接口

    前言 本文简要介绍一下kotlin中接口的使用 接口的定义 测试结果 Kotlin中的接口定义与Java的接口定义...

  • Kotlin---接口与继承

    接口与抽象类的区别 同样在Kotlin中也有接口的概念,与Java不同的是,Kotlin中的接口可以定义变量,但是...

  • kotlin 之 类、对象和接口

    定义类继承结构 Kotlin中的接口 Kotlin的接口与Java 8 中的相似:它们可以包含抽象方法(方法=函数...

  • kotlin的接口

    kotlin的接口和java的使用几乎一样Java是单继承多接口的语言,kotlin也是如此,java中是实现接口...

  • Kotlin 接口

    Kotlin 接口与 Java 8 类似,使用 interface 关键字定义接口,但是java的方法是不允许有方...

  • Kotlin 接口

    Kotlin 接口与 Java 8 类似,使用 interface 关键字定义接口,允许方法有默认实现: 实现接口...

网友评论

      本文标题:Kotlin与Java比较:接口

      本文链接:https://www.haomeiwen.com/subject/zoaqcqtx.html