- 1.概述 Kotlin接口即可以有抽象方法,也可以有实现了的方法。接口与抽象类的区别在于接口不能存在状态。接口还可以有属性,不过这些属性只能是抽象的,或者提供访问器的实现。Kotlin的接口与Java的类似,也是可以多继承的。 接下来我们来看年Kotlin如何定义接口,以及多继承情况下如何解决冲突和Kotlin中的属性有何特别。 2.定义 Kotlin接口与Jav... 1.概述 Kotlin接口即可以有抽象方法,也可以有实现了的方法。接口与抽象类的区别在于接口不能存在状态。接口还可以有属性,不过这些属性只能是抽象的,或者提供访问器的实现。Kotlin的接口与Java的类似,也是可以多继承的。 接下来我们来看年Kotlin如何定义接口,以及多继承情况下如何解决冲突和Kotlin中的属性有何特别。 2.定义 Kotlin接口与Jav...
- Kotlin伴生对象的行为看起来就是Java的static的方法和属性。但它们本质区别还是很大的。 什么是伴生对象呢? 一个在类里面用companion关键字标记的对象声明,这个对象就是伴生对象。 class MyClass { companion object Factory { fun create(): MyClass = MyClass() } } 1... Kotlin伴生对象的行为看起来就是Java的static的方法和属性。但它们本质区别还是很大的。 什么是伴生对象呢? 一个在类里面用companion关键字标记的对象声明,这个对象就是伴生对象。 class MyClass { companion object Factory { fun create(): MyClass = MyClass() } } 1...
- 可见性修饰符 Kotlin有private,protected,internal,public四个修饰符。Kotlin的类、对象、接口、构造函数、函数、属性和它的getters和setters都可以用这些修饰符修饰。如果没有明确指定修饰符,那么它默认就是public。 包 函数、属性、类、对象、接口都可以定义在顶层,即直接定义在包里。 // file name ... 可见性修饰符 Kotlin有private,protected,internal,public四个修饰符。Kotlin的类、对象、接口、构造函数、函数、属性和它的getters和setters都可以用这些修饰符修饰。如果没有明确指定修饰符,那么它默认就是public。 包 函数、属性、类、对象、接口都可以定义在顶层,即直接定义在包里。 // file name ...
- 我们经常创建类,主要目的是为了持有数据。在这样的类中,标准的功能和工具函数从数据中机械推导出来的。这样的类在Kotlin中叫做数据类(data class),用data标记: data class User(val name: String, val age: Int) 1 编译器会自动从在主构造函数中声明的属性推导出以下这些成员来: equals()/hashC... 我们经常创建类,主要目的是为了持有数据。在这样的类中,标准的功能和工具函数从数据中机械推导出来的。这样的类在Kotlin中叫做数据类(data class),用data标记: data class User(val name: String, val age: Int) 1 编译器会自动从在主构造函数中声明的属性推导出以下这些成员来: equals()/hashC...
- Kotlin的嵌套类和内部类都是写在某个类里面,区别在于嵌套类不能访问外部类的成员,如果友嵌套类前加上关键字inner它就会成为一个内部类,这时它就可以访问外部类的成员了。 嵌套类 嵌套类不能访问外部类的成员! class Outer { private val bar: Int = 1 class Nested { fun foo() = 2 } } ... Kotlin的嵌套类和内部类都是写在某个类里面,区别在于嵌套类不能访问外部类的成员,如果友嵌套类前加上关键字inner它就会成为一个内部类,这时它就可以访问外部类的成员了。 嵌套类 嵌套类不能访问外部类的成员! class Outer { private val bar: Int = 1 class Nested { fun foo() = 2 } } ...
- Kotlin扩展 Kotlin提供了用一个新的函数来扩展一个类的能力,而不需要继承这个类或用设计模式如装饰者来实现。有了这个能力,我们就可以轻松为那些我们不能改变的第三方包中的类添加功能。为类添加了的函数,可以像类的其他函数一样调用。除了扩展函数外,还可以扩展属性,让你为已存在的类定义新属性。这个Kotlin机制叫扩展函数。 扩展函数 声明一个扩展函数,我们需要在... Kotlin扩展 Kotlin提供了用一个新的函数来扩展一个类的能力,而不需要继承这个类或用设计模式如装饰者来实现。有了这个能力,我们就可以轻松为那些我们不能改变的第三方包中的类添加功能。为类添加了的函数,可以像类的其他函数一样调用。除了扩展函数外,还可以扩展属性,让你为已存在的类定义新属性。这个Kotlin机制叫扩展函数。 扩展函数 声明一个扩展函数,我们需要在...
- Kotlin密封类 密封类被用于展示受限的类层次结构。当一个值可以有一个来自一个有限集合中的类型,但不能有任何其他类型。在某种程度上来说,它们是枚举类的扩展,一个枚举类型的值的集合也是受限的。但每一个枚举常量只作为一个单例存在,而密封类的子类可以有多个实例,这些实例都可以包含状态。 定义一个密封类,你只需将sealed修饰符放在类名之前。一个密封类可以有多个子类,但它... Kotlin密封类 密封类被用于展示受限的类层次结构。当一个值可以有一个来自一个有限集合中的类型,但不能有任何其他类型。在某种程度上来说,它们是枚举类的扩展,一个枚举类型的值的集合也是受限的。但每一个枚举常量只作为一个单例存在,而密封类的子类可以有多个实例,这些实例都可以包含状态。 定义一个密封类,你只需将sealed修饰符放在类名之前。一个密封类可以有多个子类,但它...
- Kotlin属性与字段 Kotlin属性与字段1、声明属性2、Getters和Setters方法3、返回字段4、返回属性5、编译时常量6、延迟初始化的属性和变量7、重写属性8、委托属性9、Kotlin编译器对委托属性的处理10、提供委托 Kotlin属性与字段 1、声明属性 Kotlin类中的属性可以使用var关键字声明为可变的,或者使用val关键... Kotlin属性与字段 Kotlin属性与字段1、声明属性2、Getters和Setters方法3、返回字段4、返回属性5、编译时常量6、延迟初始化的属性和变量7、重写属性8、委托属性9、Kotlin编译器对委托属性的处理10、提供委托 Kotlin属性与字段 1、声明属性 Kotlin类中的属性可以使用var关键字声明为可变的,或者使用val关键...
- Kotlin可以在声明处或使用处解决泛型歧义 声明处解决泛型歧义 一、上界异常 1.Java泛型类 public class Box<T> { } 12 以下赋值是错误的:错误!错误!错误! 编译器会报类型不匹配的错误。 Box<Object> box1 = new Box<Object>(); Box<String... Kotlin可以在声明处或使用处解决泛型歧义 声明处解决泛型歧义 一、上界异常 1.Java泛型类 public class Box<T> { } 12 以下赋值是错误的:错误!错误!错误! 编译器会报类型不匹配的错误。 Box<Object> box1 = new Box<Object>(); Box<String...
- Kotlin Demo 使用Kotlin实现了电子签名,用Kotlin写Android应用真是舒服。 我自定义了一个SignatureView: package com.wong.testp import android.annotation.SuppressLint import android.content.Context import android.gra... Kotlin Demo 使用Kotlin实现了电子签名,用Kotlin写Android应用真是舒服。 我自定义了一个SignatureView: package com.wong.testp import android.annotation.SuppressLint import android.content.Context import android.gra...
- is操作符检查表达式是否是某一个类型的实例。如果一个不可修改的本地变量或属性被检查特定类型,不需要显式地强制转换: fun getStringLength(obj: Any): Int? { if (obj is String) { // `obj`自动转换为`String`在这个分支 return obj.length } // 在类型检查分支外的`obj... is操作符检查表达式是否是某一个类型的实例。如果一个不可修改的本地变量或属性被检查特定类型,不需要显式地强制转换: fun getStringLength(obj: Any): Int? { if (obj is String) { // `obj`自动转换为`String`在这个分支 return obj.length } // 在类型检查分支外的`obj...
- 条件表达式 如果Kotlin的条件语句(if语句)中只是做赋值操作而已,那么IDE会提示: Return should be lifted out of 'if' 其实就是建议你用条件表达式。 如果下面这个方法: fun maxOf(a: Int, b: Int): Int { if (a > b) { return a } else { retu... 条件表达式 如果Kotlin的条件语句(if语句)中只是做赋值操作而已,那么IDE会提示: Return should be lifted out of 'if' 其实就是建议你用条件表达式。 如果下面这个方法: fun maxOf(a: Int, b: Int): Int { if (a > b) { return a } else { retu...
- Kotlin类与继承、抽象类、嵌套类、内部类、匿名内部类、伴生对象、对象声明、对象表达式 定义属性主构造器次构造函数Kotlin 中没有 new 关键字抽象类内部类嵌套类匿名内部类类的修饰符继承重写方法重写属性派生类的初始化顺序调用超类实现重写的规则伴生对象对象声明对象表达式对象表达式和对象声明之间的语义差异 定义 与Java一样,使用class关键... Kotlin类与继承、抽象类、嵌套类、内部类、匿名内部类、伴生对象、对象声明、对象表达式 定义属性主构造器次构造函数Kotlin 中没有 new 关键字抽象类内部类嵌套类匿名内部类类的修饰符继承重写方法重写属性派生类的初始化顺序调用超类实现重写的规则伴生对象对象声明对象表达式对象表达式和对象声明之间的语义差异 定义 与Java一样,使用class关键...
- 委托模式已经被证明是实现继承的一个很好的替代方案 : interface Base { fun print() } // 实现接口Base class BaseImpl(val x: Int) : Base { override fun print() { print(x) } } // 委托其他类来帮忙实现Base接口 class Derived(b: Bas... 委托模式已经被证明是实现继承的一个很好的替代方案 : interface Base { fun print() } // 实现接口Base class BaseImpl(val x: Int) : Base { override fun print() { print(x) } } // 委托其他类来帮忙实现Base接口 class Derived(b: Bas...
- 在Kotlin中, 定义单例将是一件十份简单的事。下面就是Kotlin下定义的单例: object DataProviderManager { fun registerDataProvider(provider: DataProvider) { // ... } val allDataProviders: Collection<DataProvider... 在Kotlin中, 定义单例将是一件十份简单的事。下面就是Kotlin下定义的单例: object DataProviderManager { fun registerDataProvider(provider: DataProvider) { // ... } val allDataProviders: Collection<DataProvider...
上滑加载中
推荐直播
-
Skill 构建 × 智能创作:基于华为云码道的 AI 内容生产提效方案2026/03/25 周三 19:00-20:00
余伟,华为云软件研发工程师/万邵业(万少),华为云HCDE开发者专家
本次直播带来两大实战:华为云码道 Skill-Creator 手把手搭建专属知识库 Skill;如何用码道提效 OpenClaw 小说文本,打造从大纲到成稿的 AI 原创小说全链路。技术干货 + OPC创作思路,一次讲透!
回顾中 -
码道新技能,AI 新生产力——从自动视频生成到开源项目解析2026/04/08 周三 19:00-21:00
童得力-华为云开发者生态运营总监/何文强-无人机企业AI提效负责人
本次华为云码道 Skill 实战活动,聚焦两大 AI 开发场景:通过实战教学,带你打造 AI 编程自动生成视频 Skill,并实现对 GitHub 热门开源项目的智能知识抽取,手把手掌握 Skill 开发全流程,用 AI 提升研发效率与内容生产力。
回顾中 -
华为云码道:零代码股票智能决策平台全功能实战2026/04/18 周六 10:00-12:00
秦拳德-中软国际教育卓越研究院研究员、华为云金牌讲师、云原生技术专家
利用Tushare接口获取实时行情数据,采用Transformer算法进行时序预测与涨跌分析,并集成DeepSeek API提供智能解读。同时,项目深度结合华为云CodeArts(码道)的代码智能体能力,实现代码一键推送至云端代码仓库,建立起高效、可协作的团队开发新范式。开发者可快速上手,从零打造功能完整的个股筛选、智能分析与风险管控产品。
回顾中
热门标签