Kotlin中级(8)- - - 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()函数以泛型的方式访问枚举类中的常量。
发布了85 篇原创文章 · 获赞 261 · 访问量 47万+

猜你喜欢

转载自blog.csdn.net/lyhhj/article/details/82831184