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()函数以泛型的方式访问枚举类中的常量。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏黑泽君的专栏

java基础学习_基础语法(上)03_day04总结

============================================================================= ==...

12010
来自专栏老九学堂

【必读】C语言基础知识大全

C语言程序的结构认识 用一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使小伙伴对c语言有个初步认识。 例1:计算两个整数之和的c程...

89280
来自专栏Android先生

Kotlin入门教程,快使用Kotlin吧

数组用Array类实现,和Java不同的地方在于,Array类有一个size属性表示数组长度,还有get和set方法,但是也可以使用array[position...

11810
来自专栏C++

python笔记:#005#算数运算符

19520
来自专栏程序员与猫

常见的正则表达式解读释义

又名:写给正在学习前端的女友看的常见正则表达式解读。原文发布于 https://www.zybuluo.com/wddpct/note/728081 。 ...

22490
来自专栏jojo的技术小屋

原 三、基本概念

作者:汪娇娇 时间:2017年11月4日 一、语法 1、区分大小写 2、标识符 指变量、函数、属性的名字,采用驼峰大小写格式。 3、注释 单行:// 多行:/*...

27050
来自专栏老九学堂

【必读】超全的C语言基础知识大全

我们用一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,加深小伙伴们对C语言的认识。

40520
来自专栏Golang语言社区

谈谈Go语言的反射三定律

简介 Reflection(反射)在计算机中表示 程序能够检查自身结构的能力,尤其是类型。它是元编程的一种形式,也是最容易让人迷惑的一部分。 虽然Go语言没...

509110
来自专栏静默虚空的博客

[Java 基础]运算符和表达式

Java运算符 (1)赋值操作符 赋值操作符(=)表示:取右边的值(即右值),把它复制给左边(即左值)。 右值可以是任意的常量、变量或表达式(只要可以生成一个值...

19990
来自专栏Android群英传

Swift vs. Kotlin 漫谈系列之类与继承

23440

扫码关注云+社区

领取腾讯云代金券