美文网首页
Koltin之类的定义

Koltin之类的定义

作者: 钦_79f7 | 来源:发表于2019-12-20 17:05 被阅读0次

类的定义

接口 interface

类似 Java8 接口中的方法可以有默认实现,但是不需要 default 关键字来标识,以是否有方法体的存在来区分

  • override 修饰符,强制要求写

一个类实现多个接口时,若有相同方法在不同的接口中有默认实现,那么在实现类中要明确重写这个方法

//调用接口的默认逻辑,通过<>来指定
super<AInterface>.sum()
super<BInterface>.sum()

Kotlin1.0 是以Java6 为目标设计的,其并不支持接口中的默认方法。因此它会把每个带默认方法的接口编译成一个普通接口和一个将方法方法体作为静态函数的类的结合体。接口中只包含声明,类中包含了以静态方法存在的所有实现。因此,如果需要在Java类中实现这样一个接口,必须为所有的方法,包括在kotlin中有方法体的方法定义你自己的实现。

继承性修饰符 open、final、abstract

因Java中存在脆弱的基类问题,kotlin中类的声明默认是 final的,即不可被继承的。

  • open : 使得类可以被继承,方法可以被重写
  • abstract:抽象类,抽象方法
  • final:禁止类被继承,禁止方法被重写

接口中的方法(包括抽象方法,以及默认实现的方法),默认都是 open 的。被 override 修饰的方法也默认是 open的。当然 override 的方法可以显示的声明为final 的,禁止被重写。

可见性修饰符

  • public : 默认是public
  • internal:模块内可见
  • protected:子类可见
  • private:私有
  • kotlin中不存在Java中包私有的概念,即protected 不具有包权限,仅在其子类中可见

通用规则:类的基础类型和类型参数列表中用到的所有类,或者函数的签名都有与这个类或者函数本身相同的可见性

类的扩展函数不能访问它的private 与 protected 成员

kotlin 编译成字节码后与Java的对应关系:public -> public;internal -> public;protected -> protected;private -> private

所以存在这个现象:当一个类声明为internal 或者 protected ,在kotlin中不可访问的地方,当转换为Java时,某些kotlin不可用的场景在Java中确实可见可访问的。

嵌套类 内部类

默认是 嵌套类,对应Java的静态内部类,即不持有外部类的引用。

  • inner : 使得嵌套类变为内部类,持有外部类的引用
  • this@Outer : 通过这种方式来访问外部类 Outer 的引用

密封类 sealed

委托类 by

关键字 object

Kotlin 中 object 在多种情况下都出现,但是他们都遵循一个核心的理念:
object定义一个类并同时创建一个实例

  • 对象声明:是定义单例模式的一种方式
  • 伴生对象:可以持有工厂方法和其他与这个类相关,但是在调用时并不依赖类实例的方法。它们可以通过类名来访问
  • 对象表达式:用来代替Java的匿名内部类

相关文章

  • Koltin之类的定义

    类的定义 接口 interface 类似 Java8 接口中的方法可以有默认实现,但是不需要 default 关键...

  • Kotlin对SP使用的封装

    为了更易于使用SharedPreferences,使用Koltin的委托模式来对SP进行封装 1. 定义委托类 2...

  • 【runoob.8】类

    类定义 我们也可以定义一个空类: 我们可以像使用普通函数那样使用构造函数创建类实例: 构造器 Koltin 中的类...

  • Kotlin函数式编程 (3)✔️闭包与捕获变量

    闭包定义Java 与 Koltin 中 Lambda 捕获局部变量区别闭包捕获的变量可以脱离原始作用域而存在 一、...

  • Koltin中的+=

    在Java中当我们需要叠加一个数组中的数据时,我们可以使用+=来操作,但是kotlin中没有此方法,但是kotli...

  • Koltin中的代理属性 - 自定义委托

    前言 Kotlin是一种在Java虚拟机上运行的静态类型编程语言,被称之为Android世界的Swift,在Goo...

  • Kotlin 协程coroutine

    koltin 协程的定义 官方描述:协程通过将复杂性放入库来简化异步编程。程序的逻辑可以在协程中顺序地表达,而底...

  • Kotlin秘籍之基本类型

    Koltin内置的类型可以分为: Numbers Characters Booleans Arrays Strin...

  • Koltin Any 类型

    Koltin Any 类型 kotlin.Any The root of the Kotlin class hie...

  • Kotlin协程:MutableSharedFlow的实现原理

    一.MutableSharedFlow接口的实现 1.MutableSharedFlow方法 在Koltin协程:...

网友评论

      本文标题:Koltin之类的定义

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