Kotlin中级- - - Kotlin类之接口枚举.md

Posted Hankkin_Coding

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin中级- - - Kotlin类之接口枚举.md相关的知识,希望对你有一定的参考价值。

一、接口

在Kotlin中,一个类只能继承一个普通类或者抽象类。通过接口我们可以进行多实现

interface

interface Demo
    

  • 关键字:冒号(?,这一点是和Java不同的。Java中使用接口使用的是implements关键字
  • 在Kotlin中冒号(:)使用的地方很多:
    1.用于变量的定义
    2.用于继承
    3.用于接口
    4.方法的返回类型声明

接口冲突

例如:

interface Apple
    fun printSelf()
    fun give() = print('')


interface Banana
    fun printSelf() = println("")
    fun give = print("")


class Person : Apple,Banana
    override fun printSelf() 
        
    

    override fun give() 
        super<Apple>.give()
        super<Banana>.give()
    
    


在这里,大家应该看到了Apple和Banana这两个接口都声明了give方法,实现了这两个接口的Person类,在实现give方法时使用super<接口或超类的名称>.方法

二、枚举类

枚举类中的每一个枚举常量都是一个对象,并且他们之间用逗号分隔。

例如:

/**
 * 例:关于一个网络请求结果的枚举类
 */
enum class State
    /*
         NORMAL : 正常
         NO_DATA : 数据为空
         NO_INTERNET : 网络未连接
         ERROR : 错误
         OTHER : 其他
     */

    NORMAL,NO_DATA,NO_INTERNET,ERROR,OTHER

枚举常量的匿名类

  • 要实现枚举常量的匿名类,则必须提供一个抽象方法,且该方法定义在枚举类内部,而且必须是在枚举类变量的后面
  • 枚举变量之间使用逗号(,)分割开。但是最后一个枚举变量必须使用分号结束。不然定义不了抽象方法。
  • 每一个枚举常量就是一个对象
fun main(args: Array<String>) 
    ConsoleColor.BLACK.print()


enum class ConsoleColor(var argb : Int)
    RED(0xFF0000)
        override fun print() 
            println("我是枚举常量 RED ")
        
    ,
    WHITE(0xFFFFFF)
        override fun print() 
            println("我是枚举常量 WHITE ")
        
    ,
    BLACK(0x000000)
        override fun print() 
            println("我是枚举常量 BLACK ")
        
   ,
    GREEN(0x00FF00)
        override fun print() 
            println("我是枚举常量 GREEN ")
        
    ;

    abstract fun print()

枚举类的使用

  • 每个枚举常量都包含两个属性:name(枚举常量名)和ordinal(枚举常量位置)
  • 提供了values()和valueOf()方法来检测指定的名称与枚举类中定义的任何枚举常量是否匹配
  • 自 Kotlin 1.1起,可以使用 enumValues()和 enumValueOf()函数以泛型的方式访问枚举类中的常量。

以上是关于Kotlin中级- - - Kotlin类之接口枚举.md的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin中级- - - Kotlin类之数据类密封类内部类.md

Kotlin中级- - - Kotlin类之数据类密封类内部类.md

Kotlin中级- - - Kotlin类之的继承.md

Kotlin中级- - - Kotlin类之的继承.md

Kotlin中级- - - Kotlin类之抽象类重载和重写.md

Kotlin中级- - - Kotlin类之抽象类重载和重写.md