美文网首页
Kotlin关键字

Kotlin关键字

作者: 聞言 | 来源:发表于2017-11-04 17:41 被阅读0次
    kotlin vs java

    前言:

    这个文章主要是归集一下kotlin中的关键字,当然也会慢慢的逐一介绍和解释每一个关键字的作用和在JAVA中对应功能。文章不一定能够一次把所有的关键字都归集到一起,但是后期会发现一个更新一次,争取能够在博主能力范围内尽可能最多的归集这些关键字。也希望大家在阅读文章的时候发现没有的在下方留言,博主会及时的对所留关键字进行学习和总结,希望大家多多指点。
    以下关键字不管简单的难的都有,博主目的也是让自己对kotlin中的关键字全部做一个归集,过于简单的或者和JAVA中用法等一致的也会一笔带过。对于别人已经描述的很清楚的关键字,我会贴出链接,不在重新造轮子了。
    关键字:
    修饰类:

    1. object

    Object关键字
    作为类它可以继承另一个类,实现接口,有成员属性和成员函数;
    作为实例它可以声明为一个类型,不能有构造函数,引用时直接使用名称,多次访问返回同一结果。

    2. companion

    Kotlin单例与伴生对象

    3. constructor

    构造函数。具体点击进去看大神详解。

    4. data

    Data class 使用

    5. sealed(密封类)

    sealed class SealedClassName(){
          data class DataClassName(val name: String, var age: Int): SealedClassName(){}
          object class ObjectClassName(): SealedClassName{}
    }
    
    1. 密封类本身是抽象的,不能实例化,可以有抽象成员。
    2. 密封类不允许有非私有构造函数(默认情况下,它们的构造函数是私有的)。
    3. 请注意,扩展类(间接继承器)的子类的类可以放置在任何位置,而不必在同一个文件中。
    4. 使用密封类的关键好处是在when表达式中使用它们时发挥作用。如果可以验证该语句涵盖所有情况,则不需要else在语句中添加子句。但是,仅当您使用when表达式(使用结果)而不是作为语句时,这才有效。
    //不用在写else语句
    fun isString(scn: SealedClassName) = when(str){
          is DataClassName -> "这是DataClassName对象"
          is ObjectClassName -> "这是ObjectClassName对象"
    }
    

    6. inner

    内部类构建关键字,在kotlin中嵌套类不是内部类,内部类要用inner关键字修饰。

    7. enum

    定义枚举常量枚举类,官网介绍

    8. reified

    修饰属性:

    1. const

    这个关键字其实和val有着相似的功能,但是他修饰的属性才是正真意义上JAVA中static final修饰的常量,关键字只能用在object修饰的类内和companion object{}伴生对象内或者文件的顶层(也就是和类同意级别的,调用则是用文件名调用,具体后续简介)。

    2. by

    by关键字就是kotlin中特有的,一般用在委托属性(后续会单独介绍委托属性)的时候。

    3. val

    不可变属性,对应JAVA中被final修饰过的属性,标志着只能被一次赋值,但是该属性也不是完全不可变,可以被继承后改变,具体后续文章会介绍,这里只要知道一个概念。

    4. var

    可变属性

    5. vararg(可变参数)

    修饰方法:

    通用关键字:

    1. open

    kotlin中所有文件默认是final的,也就是说默认kotlin中的类, 属性,方法都是不继承的。要想实现继承我们需要在对应的类, 属性, 方法前面加上open关键字,标识着这个类, 属性, 方法是可以被继承的,注意kotlin中interface(接口)修饰的类和abstract(抽象)修饰的类,属性,方法和override修饰的方法和属性默认是open。

    2. final

    kotlin中所有文件默认是final的, 该关键字用法和JAVA一样。

    3. private

    只在该类(以及它的成员)中可见, JAVA中用法一致。

    4. internal (对应JAVA中的所有类,属性,方法的默认default

    在本模块的所有可以访问到声明区域的均可以访问该类的所有internal成员。
    模块在 Kotlin 中就是一系列的 Kotlin 文件编译在一起:
    — an IntelliJ IDEA module; (一个module)
    — a Maven or Gradle project;.(一个gradle里面的依赖jar包(maven))
    — a set of files compiled with one invocation of the Ant task.(通过一次调用Ant任务编译的一组文件)

    5. protected

    一样但在子类中也可见, JAVA中用法一致。

    6. public

    任何地方可见, JAVA中用法一致,值得注意的是ktlin中所有的类,属性,方法默认都是public的。

    相关文章

      网友评论

          本文标题:Kotlin关键字

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