全网整合营销服务商

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

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

详解Kotlin中的面向对象(一)

Kotlin中的面向对象

面向对象

面向对象的含义大家应该并不陌生,通过将事物抽象成对象,大大简化了程序的开发难度。我们常用的Java、Python、C++都属于面向对象的编程语言。Kotlin和java很相似,也是一种面向对象的语言。作为Kotlin中最重要的一部分,我们可以通过了解Kotlin的OOP进而了解这门语言,本文将从类、属性、接口、对象等多个方面介绍Kotlin的面向对象的特性。


和大部分语言类似,Kotlin使用class作为类的关键字,当我们声明一个类时,需要通过class加类名的方式实现:

class ClassDemo{ 
 
} 

在声明一个类的时候,至少需要包含class关键字以及后面的类名,同时也可以根据需要增加类头(用来声明一些参数)和类体(花括号{}中包含的内容,可省略)。

构造函数

与java不同的是,虽然都可以包含多个构造函数,但java中的各个构造函数都是平级的,而Kotlin中却分为了两级(主构造函数和二级构造函数),主构造函数是包含在类头中的,需要在init方法中实现额外的操作,而二级构造函数可以在函数体中实现所有操作

//主构造函数,constructor和init都可省略 
class ClassDemo constructor(type:String){ 
 init{ 
 System.out.println(type) 
 } 
} 

在主构造函数中传入的参数可以在类体中为属性赋值,也可以直接在主构造函数中声明

class ClassDemo(type:String, var prop2: String = type){ 
 var prop1 = type 
} 

二级构造函数必须包含constructor

class ClassDemo{ 
 constructor(type:String){ 
  System.out.println(type) 
 } 
} 

对于有主构造函数的类而言,每个二级构造函数都要,或直接或间接通过另一个二级构造函数代理主构造函数。在同一个类中代理另一个构造函数使用 this 关键字:

//包含主构造函数的二级构造函数 
class ClassDemo(type:String){ 
 constructor(type:String, param:String):this(type){ 
  System.out.println(type + param) 
 } 
} 

无论有没有声明主构造函数,Kotlin都会提供一个构造函数的方法,有时可能不希望将某个类的构造函数暴露出来(比如实现单例模式时),那么就需要对主构造函数进行处理

class ClassDemo private constructor(){ 
 
} 

当我们想创建实例时,可以直接调用对应的构造函数进行创建

var demo = ClassDemo("hello world") 
val demo = ClassDemo("hello","world") 

我们注意到,在Kotlin中无论是声明属性还是创建实例,会有两种方式,var和val,val类似于java中的final,通过它声明的内容是无法变化的,而var和val相反,声明的内容既可以读取也可以修改。

继承

在Kotlin中,所有的类会默认继承Any这个父类,但Any并不完全等同于java中的Object类,因为它只有equals(),hashCode()和toString()这三个方法。当我们想定义一个父类时,需要使用open关键字

open class Base{ 
 
} 

然后在子类中使用冒号“:”进行继承

class SubClass : Base(){ 
 
} 

如果父类有构造函数,那么必须在子类的主构造函数中进行继承,没有的话则可以选择主构造函数或二级构造函数

//父类 
open class Base(type:String){ 
 
} 
 
//子类 
class SubClass(type:String) : Base(type){ 
 
} 

重写

Kotlin中的重写和java中也有所不同,因为Kotlin提倡所有的操作都是明确的,因此需要将希望重写的方法设为open

open fun funDemo() {} 

然后通过override标记实现重写

override fun funDemo() { 
 super.funDemo() 
 } 

override重写的函数也是open的,如果希望它不被重写(前提是这个类可以被继承),可以在前面增加final标签

open class SubClass : Base{ 
 constructor(type:String) : super(type){ 
 
 } 
 
 final override fun funDemo() { 
 super.funDemo() 
 } 
} 

当一个类同时继承且实现了多个接口时,如果重写的方法在父类和接口中都有定义,那么可以通过super<>的方式进行继承

//接口 
interface InterfaceDemo{ 
 fun funDemo(){} 
} 
 
//继承Base并且实现InterfaceDemo 
class SubClass : Base(),InterfaceDemo{ 
 final override fun funDemo() { 
 super<Base>.funDemo() 
 super<InterfaceDemo>.funDemo() 
 } 
} 

密封类

密封类用于代表严格的类结构,值只能是有限集合中的某中类型,不可以是任何其它类型。这就相当于一个枚举类的扩展:枚举值集合的类型是严格限制的,但每个枚举常量只有一个实例,而密封类的子类可以有包含不同状态的多个实例。声明密封类需要在 class 前加一个 sealed 修饰符。密封类可以有子类但必须全部嵌套在密封类声明内部。

//密封类 
sealed class Expr { 
 class Const(val number: Double) : Expr() 
 class Sum(val e1: Expr, val e2: Expr) : Expr() 
 object NotANumber : Expr() 
} 

和Kotlin中的类相关的用法就介绍到这里,文中的完整代码见github,在Kotlin中的面向对象(二)中将会介绍属性、接口等面向对象过程中同样常见的内容。

文章代码下载:http://xiazai./201706/yuanma/helloKotlin-master().rar

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


# Kotlin中的面向对象  # Kotlin面向对象分析  # 详解Kotlin中的面向对象(二)  # Kotlin基础教程之面向对象  # Kotlin面向对象知识点讲解  # 重写  # 面向对象  # 多个  # 子类  # 都是  # 当我们  # 类中  # 的是  # 都有  # 会有  # 都要  # 将会  # 最重要  # 两种  # 不可以  # 设为  # 我们可以  # 这就  # 有所不同  # 可以通过 


相关文章: 儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  深圳网站制作平台,深圳市做网站好的公司有哪些?  网站代码制作软件有哪些,如何生成自己网站的代码?  建站之星如何配置系统实现高效建站?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  开封网站制作公司,网络用语开封是什么意思?  建站之星3.0如何解决常见操作问题?  javascript基本数据类型及类型检测常用方法小结  Android自定义listview布局实现上拉加载下拉刷新功能  详解jQuery中基本的动画方法  C++如何使用std::optional?(处理可选值)  建站VPS配置与SEO优化指南:关键词排名提升策略  如何快速登录WAP自助建站平台?  高防服务器如何保障网站安全无虞?  建站之星伪静态规则如何正确配置?  小程序网站制作需要准备什么资料,如何制作小程序?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  如何破解联通资金短缺导致的基站建设难题?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  定制建站流程解析:需求评估与SEO优化功能开发指南  如何通过万网虚拟主机快速搭建网站?  制作网站的软件免费下载,免费制作app哪个平台好?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  网站制作软件免费下载安装,有哪些免费下载的软件网站?  制作网站怎么制作,*游戏网站怎么搭建?  如何在阿里云虚拟服务器快速搭建网站?  建站之星后台密码遗忘?如何快速找回?  深入理解Android中的xmlns:tools属性  建站之星如何实现五合一智能建站与营销推广?  如何在IIS中新建站点并解决端口绑定冲突?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  Python文件管理规范_工程实践说明【指导】  香港服务器租用费用高吗?如何避免常见误区?  如何通过虚拟机搭建网站?详细步骤解析  专业网站建设制作报价,网页设计制作要考什么证?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  如何用搬瓦工VPS快速搭建个人网站?  已有域名和空间如何搭建网站?  如何在阿里云完成域名注册与建站?  如何通过PHP快速构建高效问答网站功能?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  宝塔建站后网页无法访问如何解决?  如何在云主机快速搭建网站站点?  如何打造高效商业网站?建站目的决定转化率  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  c# 在高并发场景下,委托和接口调用的性能对比  网站制作公司排行榜,四大门户网站排名? 

您的项目需求

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