首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kotlin中级(8)- - - Kotlin类之接口、枚举.md

Kotlin中级(8)- - - Kotlin类之接口、枚举.md

作者头像
Hankkin
发布2018-09-30 10:46:10
4380
发布2018-09-30 10:46:10
举报

一、接口

在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()函数以泛型的方式访问枚举类中的常量。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年09月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、接口
  • 二、枚举类
    • 枚举常量的匿名类
      • 枚举类的使用
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档