首页
学习
活动
专区
圈层
工具
发布

【Kotlin】常用的 Kotlin 类 ② ( 枚举类 | 枚举类定义函数 | 密封类 )

文章目录 一、枚举类 二、枚举类定义函数 1、枚举类定义普通函数 2、枚举类定义构造函数 三、密封类 一、枚举类 ---- Kotlin 中使用 枚举类 定义常量 , 枚举类定义格式如下 : 枚举常量...枚举的 常量名称 ; MALE true 枚举的常量 Gender.MALE 是 Gender 类的一个 实例对象 ; 二、枚举类定义函数 ---- 在枚举类中 , 可以 定义函数 , 包括 普通函数...和 构造函数 ; 1、枚举类定义普通函数 通过 枚举类 的 类型常量 ( 实例对象 ) 可以 调用 枚举类中定义的方法 ; 为枚举类定义普通函数 : 在枚举类 Gender 中定义了 log 函数 ,...---- 枚举类型 是一组 子类型 闭集 ; 密封类 可以 定义 枚举类型的 子类型闭集 , 一个密封类可以有多个子类 , 继承密封类的子类 必须 与 密封类在相同的 Kotlin 代码文件中 ; 密封类适用于这种情况..., 要使用枚举的特性 , 但是需要在枚举基础上保存多个特性 ; 枚举只能实现简单的常量列举 , 如果需要更复杂的 子类型闭集 , 则需要使用密封类 ; 代码示例 : sealed class Gender

1.7K10

Kotlin中级(6)- - - Kotlin类之的继承.md

Kotlin继承类 1.超类(Any) 在Kotlin中,所有的类都是继承自Any类,这是一个没有父类型的类。...package kotlin /** * The root of the Kotlin class hierarchy....* 看这个源码注释:意思是任何一个Kotlin的类都继承与这个[Any]类 */ public open class Any { // 比较: 在平时的使用中经常用到的equals...Java还是Kotlin,重写基类型里面的方法,则称为重写,或者是覆盖基类型方法 1.当基类中的函数,没有用到open修饰符修饰的时候,实现类中出现的函数的函数名不能与基类中没有用open修饰符修饰的函数名相同...// 注意,则的`final`修饰符在编辑器中是灰色的,因为Kotlin中默认的类默认是final的 那么当一个基类去继承另外一个基类时,第二个基类不想去覆盖掉第一个基类的方法时,第二个基类的该方法使用

83860
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    About Kotlin-Kotlin中的类1About Kotlin(1)

    About Kotlin(1) 因为是从Java的角度来学习Kotlin,在Java中,类作为第一等公民。故学习Kotlin,也先从其的类开始。...Kotlin中的类 普通的类 class Kotlin中没有添加修饰符直接以class开头的都是final类。final类的意义在于JVM可能存在的优化(常量和方法内联)和防止继承的滥用。...构造方法 Kotlin中一个类有一个primary的构造方法和可以多个的secondary的构造方法。...构建这样的对象需要写很多代码。 对应的Open类 对应上面的类,kotlin中的open类就是能够被继承的了。必须在类声明的时候使用open关键字。...//Kotlin中所有类的父类是Any,类似于Object,不过Any不输于java.lang.Object,其有三个方法 //这里的operator是操作符重载,在Kotlin中的符号中会说明 public

    1.7K30

    来自非科班的面经回忆!(大厂,国企,银行)

    笔者非科班转行,两个月拿了十多个offer,其中包括了互联网大厂,央企,国企,银行等,下面看看都面了什么(部分回忆)。总之,在面试国企等企业时,会有一些有意思的问题,也会出现群面的场景。...如何查看段的范围和大小 elf目标可执行文件的组成部分,elf文件中的段跟运行时的段有什么区别 如何装载目标文件到内存当中 缺页中断的处理过程 提到了换页换出的时候会产生缺页中断,反问是否一定是换页产生的吗...Linux上运行的进程的CPU有什么组成部分,整体的CPU占用和每一块的CPU的占用。怎么用top去看一个进程的CPU占用的组成部分。...(是不是做的性能优化这部分的工作比较少) C++ STL里面有很多性能优化相关的类,这个你了解吗?STL的string类本身有多大,如何保存字符串的?vector如何动态扩展空间?...访问的时间周期是多少?快多少倍? 本科、研究生、实习做的项目和事情中哪个事情比较满意,能够体现自己的能力的? 技术也好、做事情的方式也好的优势和劣势? 你是哪个地方的人?为什么不参加实习生的招聘?

    1.2K00

    Kotlin 中的集合类排序Kotlin 开发者社区

    在本教程中,我们将重点关注Kotlin中的排序。此外,我们将使用kotlin.comparisons包来实现复杂的排序规则。...2.对集合进行排序 Kotlin提供了多个实用程序,使分类集合的过程更容易。让我们探讨其中几种方法。 2.1。分类 对集合进行排序的最简单方法是调用sort方法。**此方法将使用元素的自然顺序。...对于降序,我们可以使用反向方法或者定义正确的 比较器。 3.比较 Kotlin包含一个非常有用的包来构建 Comparator - *kotlin.comparisons。...>>({it.first}, {it.second}) 随意探索kotlin.comparisons以发现所有可用的工厂。 4。...结论 在本快速教程中,我们了解了如何使用sort,sortBy和sortWith方法对Kotlin中的集合进行排序。

    3K50

    内部类(来自类和对象的补充)

    之前我们在讲类和对象时就提到过内部类,不过当时说了等讲完抽象类和接口再讲这个,现在兑现诺言的时候到了,那我们开始内部类的学习吧! 内部类 ❤️❤️内部类是指在一个类的内部定义的另一个类。...所以因为静态内部类的创建不需要先创建外部类,我们往往用静态内部类比实例内部类多一点。 3. 静态内部类可以直接访问外部类的静态成员,但不能直接访问外部类的非静态成员。...如果需要访问外部类的非静态成员,可以通过在内部类中创建外部类的对象来实现。...如添加OutClass outclass=new OutClass();而后将在内部类中且原本来自外部类的实例变量和实例方法前加上outclass. 就可以了。...其语法格式如下: ​ 接口 类名 = new 接口() { // 匿名内部类的成员变量和方法 }; ​ 注意实施该接口的类被隐藏了,没有显示出来(以及implements也没显示出来),我们new

    57310

    来自mooon的最简单的日志类CSimpleLogger

    /**  * 单个头文件,可即时独立使用,只要定义了宏NOT_WITH_MOOON,即不依赖于mooon  * 简单的写日志类,非线程安全,提供按大小滚动功能  * 不追求功能...#define MOOON_SYS_SIMPLE_LOGGER_H // 只要定义了NOT_WITH_MOOON宏, // 则本文件和mooon无任何关系,方便集成到自己的代码中...    return result_stream.str(); } /***   * 取当前时间,和date_util.h有重复,但为保持simple_logger.h的独立性...      * @log_size 每个日志文件的大小,单位为字节数,如果小于1024,则会被强制为1024       * @log_numer 日志滚动的个数       * @record_size...log_numer;     /** 日志滚动的个数 */     unsigned short _record_size;  /** 单条日志的大小,单位为字节数 */ };

    70010

    Kotlin中的常用类及其使用

    一、构造函数和初始化块 1.初始化块 2.主构造函数 3.次构造函数 4.他们之间的联系 二、属性 1.属性的声明 2.避免递归调用的幕后字段 三、常用的类 一、构造函数和初始化块 1.初始化块 代码的初始化工作由它负责...,在调用主构造函数之前执行,这部分理论上可以进行任何工作,但建议类的初始化赋值可以放在这,其余的最好由其他专门的地方处理,采用init关键字 init{ println("ww cool") }...和getter,所以不用这么担心 三、常用的类 抽象类 含有抽象方法的类称为抽象类,这一点和java里面很像 内部类 使用inner关键字,可以访问内部类外的属性 class outer{ val...name = "ww" inner class inside{ println("my name is $name") } } 嵌套类 和内部类很像,但是没有加inner...//不能直接调用外部的变量 } } 枚举类 与传统的java写法相比,由于少了getter和setter,所以代码显得相当简洁,也很容易读懂 enum class Color ( var colorName

    1.7K20

    Kotlin Primer·第四章·Kotlin 的类特性(下)

    与 Java 混编 第四章·Kotlin 的类特性 第五章·函数与闭包 函数与闭包的特性可以算是 Kotlin 语言最大的特性了。...5.1 函数 即使 Kotlin 是一门面向对象的编程语言,它也是有函数的概念的——而不像 Java 那样,仅仅有“方法”。...首先看到他的函数定义,你可以在 Int 类的源码中找到: /** Creates a range from this value to the specified [other] value. */...内存占用(函数对象和类都会占用内存) 以及虚方法调用都会带来运行时的消耗. 但是也不是说所有的函数都要内联,因为一旦添加了inline修饰,在编译阶段,编译器将会把函数拆分,插入到调用出。...如果一个 inline 函数是很大的,那他会大幅增加调用它的那个函数的体积。 5.4 小结 闭包应该算是 Kotlin 最核心特性之一了。

    67420

    【Kotlin】常用的 Kotlin 类 ① ( 嵌套类 | 数据类 | 数据类 copy 函数 | 数据类解构声明 operator fun component1 | 数据类运算符重载 )

    , 方法内部类 , 匿名内部类 几种类型 ; Kotlin 嵌套类 , 相当于 Java 中的 静态嵌套类 ; 代码示例 : 在下面的代码中 , 在 Person 类内部中定义 Student 嵌套类...---- 数据类型定义 : Kotlin 中的 数据类型 是 专门用于存储 数据的 类 , 一般该类中不定义 成员方法 ; 数据类信息 : 数据类 中 自动提供了 toString 实现 , 可以将数据转为...字符串 ; 数据类型对比 : == 运算符 对比两个数数据类对比的是引用地址 , equals 和 hashCode 函数 可以对比具体的数据值 ; 在 Kotlin 中 , 一般情况下 == 比较的是内容...copy 函数 ---- Kotlin 编译器不仅为 数据类 重写了 toString , equals , hashCode 函数 , 还 提供了 copy 函数 , 借助该函数可以 快速创建一个相同内容的数据类..., 使用集合一次性给多个变量赋值 ; Kotlin 普通类 和 数据类 都可以 支持 解构语法 , 为多个变量进行赋值 ; 数据类 自带 支持解构语法的特性 , 不需要使用 operator fun

    1.4K20

    Kotlin入门(12)类的概貌与构造

    为解答这个疑问,接下来的几篇文章将好好描述一下Kotlin如何操作类及其对象,本篇文章先对类的定义进行说明并加以运用。...而对应的Kotlin代码是下面这样的: class MainActivity : AppCompatActivity() { } 根据上述代码简单地比较,Kotlin对类的写法与Java之间有以下几点区别...的名字叫init,不像Java那样把类名作为构造函数的名称; 2、Kotlin打印日志使用了类似C语言的println方法,而非Java的System.out.println; 3、Kotlin创建实例时省略了关键字...可事情往往不是你想的那样,Kotlin作为新时代的编程语言,它的设计总是突破常规。前面介绍函数的时候,提到Kotlin把函数看成是一种特殊的变量,至于类某种意义上算是一种特殊的函数。...为了解决该问题,Kotlin设定了主构造函数不是必需的,也就是说,某个类可以把几个构造函数都放在类内部定义,就去掉了主构造函数,据此修改之后的类代码如下: class AnimalSeparate {

    60320

    类中的静态非静态方法

    C#的类中可以包含两种方法:静态方法和非静态方法。   使用了static 修饰符的方法为静态方法,反之荝是非静态方法。   ...静态方琺是①種 特殊的成園方琺,它不属纡类的某一个具体的实唎,而是属于类本裑。葰以对静态方法不需要首先创建一个类哋实例,而是采用类名.静态方法的格式 。   ...类的方法笩码只有一份,它们的生命周期和类是一致哋.实例方法是通过对象名调用的,静态方法与类关联而不是与对象名关联.   5.哪么在程序狆什么地方可以利用静态字段和静态构造方法,通常适用于于一些不会经常变化而又频繁使用的数据...对一个类无论创踺了多少 个实例,它的静态牸段永远都只有一个副本(副本我理解为只有一块内存   静态成员存在于内存,悱静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因潙静态成员存在于禸存...,所以悱靜态成员可以直接访问类中静态的成员.

    2.4K20

    (修订)来自山区双非本科少年的秋招冒险记

    type=0&order=4&pos=12&page=3 文中作者来源于山区的一个双非本科生,秋招期间的心态着实乐观,希望大家在找工作的时候心态也可以向这位朋友学习,稳住心态,备战面试!...前言 就在今天,我的秋招也算有了个结果,于是决定写篇文章分享下自己作为一个来自山区的双非本科少年秋招这一路走来的经历和感受。...自我介绍 我是那个来自山区与世无争的美少年 先谈谈我自己吧,我从小在云南长大,高考因为自己不争气,大学依然在云南读的,属于一个双非一本,专业吗就选了个计算机,逼近从小到大都喜欢玩游戏,我相信选计算机的兄弟和我一个原因的不在少数...最后可能自己的双非学历也稍微有一些影响吧。 综合起来,GG 2,笔试挂 阅文 柠檬微趣 知乎 多益 YY 贝壳 UCload 到这里总算好多了,但细想的话。。。...这里我说一下为什么我只提了网申的公司,由于我地区和学校的原因,我们山里一个互联网大公司都没来过,不甚至不是大公司,稍微正经的互联网公司,来的多是外包或者一些不招研发岗的(比如海康这一类的,在我们山里只要销售

    70521

    静态类和非静态类的主要差别「建议收藏」

    如有雷同,不胜荣幸,若转载,请注明 静态类和非静态类的主要差别 主要差别在于静态类不能实例化,静态类编译器可以运行检查确保不是偶然的加入实例成员,C#编译器会自己主动把它标记为sealed。...静态类中不能创建非静态的方法。即静态方法中仅仅能创建静态方法。但在非静态类中可以调用静态方法 静态类的主要特性: 1:仅包括静态成员。 2:无法实例化。 3:是密封的。 4:不能包括实例构造函数。...5:非静态类能够包括静态的方法、字段、属性或事件。 6:静态方法和属性不能訪问其包括类型中的非静态字段和事件 7:静态方法仅仅能被重载,而不能被重写,由于静态方法不属于类的实例成员。...非静态类在使用时必需要实例化。...每次使用时都要进行实例化,普通情况下使用比較频繁的类,能够使用静态类,比方LogClass,ConfigClass等等,个人总结,疏漏之处还请高手指点 发布者:全栈程序员栈长,转载请注明出处:https

    1.3K10

    Kotlin入门(13)类成员的众生相

    下面是补充了新属性之后的类代码: class WildAnimalMember (var name:String, val sex:Int = 0) { //非空的成员属性必须在声明时赋值或者在构造函数中赋值...} 在类内部定义成员方法,就是前几篇文章提到的定义普通函数,具体参见《Kotlin入门(9)函数的基本用法》和《Kotlin入门(10)七十二变的输入参数》,这里不再赘述。...然而Kotlin取消了关键字static,也就无法运用静态成员的相关手段。为了弥补这方面的功能缺陷,Kotlin引入了伴生对象的概念,可以把它理解为“影子”,伴生对象之于它所在的类,仿佛是如影随形。...总结一下,Kotlin的类成员分为实例成员与静态成员两种,实例成员包括普通成员属性和成员方法,其中与入参同名的成员属性可以在构造函数中直接声明,外部必须通过类的实例才能调用实例成员。...静态成员包括静态常量与静态方法,它们都在类的伴生对象中定义,外部可以通过类名直接使用静态成员。 点此查看Kotlin入门教程的完整目录

    78320

    Android面试题之Kotlin的几种常见的类

    初始化的顺序 主构造函数里声明的属性 类级别的属性赋值 init初始化块里的属性赋值和函数调用 次构造函数里的属性赋值和函数调用 延迟初始化 lateinit关键字用来延迟初始化 isInitialized...by lazy初始化操作是线程安全的 初始化注意点 使用初始化块时,顺序非常重要,必须确保块中的所有属性已经完成初始化 初始化块中的函数里所用到得属性,也要确保已经初始化完成 类里面的属性按从上往下顺序初始化...,在调用方法函数时,一定要确保属性已经初始化完成 继承 默认不可继承,如果要开放,需要open关键字 可以被覆写的方法也要open关键字修饰 用 is 来判断类型,用as来手动转换类型,并且kotlin...copy过来 支持解构语法 支持运算符重载 数据类使用条件 经常需要比较、复制或打印自身内容的类,数据类尤其适合 数据类必须有至少带一个参数的主构造函数 主构造函数的参数必须是val或是var 数据类不能使用...密封类可以用来定义一个类似枚举类的代数数据类型,但你可以更灵活地控制某个子类型 密封类可以有若干个子类,要继承密封类,这些子类必须和它定义在同一个文件里 sealed class LicenseStatus

    26410
    领券