全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Kotlin 基础教程之类、对象、接口

Kotlin 基础教程之类、对象、接口

Kotlin中类、接口相关概念与Java一样,包括类名、属性、方法、继承等,如下示例:

interface A {
  fun bar()
  fun foo() {
  // 可选方法体
  }
}

class Child: A {
  override fun bar() {
    // todo
  }
  override fun foo() {
    super.foo()
  }
}

class

构造器

Kotlin 中的类可以有一个 主构造器, 以及一个或多个次构造器, 主构造器是类头部的一部分, 位于类名称之后。

class Person constructor(name: String) {...}

如果主构造器没有任何注解(annotation), 也没有任何可见度修饰符, 那么 constructor 关键字可以省略

class Person(name: String) {...}

主构造器中不能包含任何代码. 初始化代码可以放在初始化代码段 (initializer block) 中

class Persion(name: String) {
  private val firstName: String = name
  private var age: Int
  init {
    age = 10
  }
}

Kotlin 有一种简洁语法, 可以通过主构造器来定义属性并初始化属性值:

class Persion(val name: String, var age: Int) {...}

如果构造器有注解, 或者有可见度修饰符, 这时 constructor 关键字是必须的, 注解和修饰符要放在它之前

class Persion public @Inject constructor(val name: String) {...}

类还可以声明次级构造器 (secondary constructor)。如果类有主构造器, 那么次级构造器都必须委托给主构造器

class Persion(val name: String) {
  constructor(name: String, age: Int): this(name) {
    // todo
  }
}

类实例化

Kotlin 没有 new 关键字

val persion = Persion("jason")

继承

Kotlin的继承概念和Java一样,”类名: 超类“ 冒号表示继承。

与Java的Object相对,Kotlin也有一个这样的Any类,类默认继承Any。

与Java的final相反,Kotlin类默认是final的,允许被继承的类,需要加 open 修饰。

open class Base {
  open fun v() {...}
  fun nv() {...} // can't be override
}

方法和属性的覆盖

方法的覆盖和Java类似,但是只有 open 的方法才能 override, final 类是不允许定义 open方法。

class Other: Base() {
  override fun v() {...}
}

可以加final禁止ovrride, final override fun v() {...}

与方法的覆盖类似, Kotlin提供了属性的覆盖,例如

open class Foo {
  open val x: Int = 0
}

class Bar(override val x: Int): Foo {...}

class Bar1: Foo() {
  override var x: Int = 0 // override to var
}

抽象类

类本身, 或类中的部分成员, 都可以声明为 abstract 的, 抽象类不必标识 open。

abstract class Base {
  abstract fun v()
}

同伴对象

Kotlin 的类没有静态方法, 大多数情况下, 建议使用包级函数(packagelevel function)替代, 或者使用同伴对象,
达到静态方法效果

class Foo {

companion object {
  fun v() {}
}
}

interface

Kotlin 的接口和Java差不多,但是接口的属性不一样,Kotlin接口中的属性是抽象的。

interface A {
  val x: Int
}

class B: A {
  override val x: Int = 10
}

object

Kotlin 没有静态类, 可以用object实现静态类的效果。

object B {
  fun foo() {
    // do something
  }
}

class A {
  fun bar() {
   B.foo()
  }
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Kotlin  # 之类、对象、接口  # 中类与对象  # kotlin延迟初始化和密封类详细讲解  # Kotlin浅析延迟初始化与密封类的实现方法  # Kotlin 创建接口或者抽象类的匿名对象实例  # kotlin 定义接口并实现回调的例子  # Kotlin 匿名类实现接口和抽象类的区别详解  # 解决Kotlin 类在实现多个接口  # 覆写多个接口中相同方法冲突的问题  # Kotlin中的密封类和密封接口及其应用场景  # 放在  # 修饰符  # 也有  # 还可以  # 抽象类  # 多个  # 也没  # 没有任何  # 有一种  # 可以用  # 可以通过  # 希望能  # 可选  # 谢谢大家  # 有一个  # 类中  # 有任何  # 情况下  # 器中  # 都必须 


相关文章: 武清网站制作公司,天津武清个人营业执照注销查询系统网站?  如何在Golang中使用replace替换模块_指定本地或远程路径  建站之星安全性能如何?防护体系能否抵御黑客入侵?  广州建站公司哪家好?十大优质服务商推荐  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  建站之星后台管理如何实现高效配置?  php json中文编码为null的解决办法  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  网站制作服务平台,有什么网站可以发布本地服务信息?  如何制作网站标识牌,动态网站如何制作(教程)?  建站主机选购指南:核心配置优化与品牌推荐方案  建站之星IIS配置教程:代码生成技巧与站点搭建指南  如何通过可视化优化提升建站效果?  建站168自助建站系统:快速模板定制与SEO优化指南  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  建站之星与建站宝盒如何选择最佳方案?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  Python lxml的etree和ElementTree有什么区别  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  如何构建满足综合性能需求的优质建站方案?  已有域名和空间如何搭建网站?  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  深圳网站制作案例,网页的相关名词有哪些?  网站制作软件有哪些,制图软件有哪些?  网站插件制作软件免费下载,网页视频怎么下到本地插件?  如何在VPS电脑上快速搭建网站?  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  小型网站制作HTML,*游戏网站怎么搭建?  建站之星后台管理:高效配置与模板优化提升用户体验  如何在新浪SAE免费搭建个人博客?  如何在阿里云虚拟服务器快速搭建网站?  如何在景安云服务器上绑定域名并配置虚拟主机?  如何通过远程VPS快速搭建个人网站?  常州自助建站工具推荐:低成本搭建与模板选择技巧  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  如何打造高效商业网站?建站目的决定转化率  定制建站价位费用解析与套餐推荐全攻略  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  潮流网站制作头像软件下载,适合母子的网名有哪些?  IOS倒计时设置UIButton标题title的抖动问题  如何在局域网内绑定自建网站域名?  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  全景视频制作网站有哪些,全景图怎么做成网页?  建站之星伪静态规则如何设置?  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  建站为何优先选择香港服务器?  建站之星北京办公室:智能建站系统与小程序生成方案解析 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。