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

在Kotlin中的面向对象(一)中,介绍了Kotlin类的相关操作,本文将在上文的基础上,继续介绍属性、接口等同样重要的面向对象的功能。
属性
class AttrDemo{
private var attr1 : String = "";
protected var attr2 : String = "";
public var attr3 : String = "";
var varattr : String = "";
val valattr : String = "";
var attr = 1;
}
属性是每个对象中最基本的单位,也是必不可少的一部分,与Java一样,Kotlin也提供了private、protected、public三种声明变量的方式,不同的是,在Kotlin中如果没声明访问权限,默认认为是public类型,即在其他任何地方都可以访问。同时,Kotlin提供了var和val用来表示属性的读写权限,var是可读写的变量,val则是只读变量,类似于Java中的final。
需要注意,Kotlin对于空安全的要求非常严格,所以对于所有的属性都需要进行初始化,因此也可以通过直接赋值的方式说明属性的类型,不一定非在后面通过冒号的方式追加。不过对于习惯Java语法的开发者而言可能还是会注明属性的类型,而习惯脚本语言的开发者可能会倾向于直接赋值。
在Kotlin中,get和set方法不是必须的,因为Kotlin会自动对get和set方法进行处理,变成直接调用属性的方式(可参考Kotlin的第一行代码中的说明),但Kotlin还是有自己独特的使用get和set的方式
private var attr1 : String
get() = attr1.toString()
set(value) {
attr1 = value
}
protected var attr2 : String
get() {
//TODO GET
return attr2.toString()
}
set(value) {
attr2 = value
}
Kotlin提供了多种设置get和set的方法,上面的代码中展示了两种get方法和一种set方法,有时当你希望改变get、set的访问权限或是使用注解时,也可以直接对get、set进行操作
var attr4 : String = "" //一定要初始化 private set
接口
和Java类似,Kotlin使用interface作为接口的关键词,和抽象类相比,他们都可以包含抽象的方法以及方法的实现,但接口无法保存状态。
interface mInterfaceDemo{
fun function1()
fun function2(){
}
}
和继承的方式类似,实现接口也是使用冒号“:”,不过方法略有不同
class InterfaceDemoImpl : mInterfaceDemo{
override fun function1() {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
}
我们可以在接口中申明属性,但接口中的属性要么是抽象的,要么提供访问器的实现。接口属性不可以有后备字段,而且访问器不可以引用它们。
泛型
泛型是程序设计语言的一种特性。允许程序员在强类型程序设计语言中编写代码时定义一些可变部分,那些部分在使用前必须作出指明。像 java 一样,Kotlin 中的类可以拥有类型参数
class GenericDemo<T>(t : T){
var value = t
}
通常来说,我们需要这样构建一个对象
val generic: GenericDemo<Int> = GenericDemo<Int>(1)
但如果类型是需要推断的,也可以通过传入忽略类型的参数进行创建
val generic = GenericDemo(1)
嵌套类
Kotlin中的类也可以嵌套在别的类中
class Outer {
private val bar: Int = 1
class Nested {
fun foo() = 2
}
}
可以通过inner修饰符增加一个对外部类的引用,使得内部类可以调用外部类的属性
class Outer {
private val bar: Int = 1
inner class Inner {
fun foo() = bar
}
}
val demo = Outer().Inner().foo() //==1
对于匿名内部类,通过对象表达式进行创建
mvp_button.setOnClickListener(object : View.OnClickListener{
override fun onClick(v: View?) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
});
如果对象是函数式的 java 接口的实例(比如只有一个抽象方法的 java 接口),我们可以用一个带接口类型的 lambda 表达式创建它。
mvp_button.setOnClickListener {
startActivity(Intent(MainActivity@this,MVPActivity::class.java))
}
枚举类
枚举类最基本的用法就是实现类型安全的枚举,每个自举常量都是一个对象。枚举常量通过逗号分开。
enum class Direction {
EAST,NORTH,SOUTH,WEST
}
因为每个枚举对象都是一个实例,所以我们可以对其进行初始化
enum class Color(val rgb: Int) {
RED(0xFF0000),
GREEN(0x00FF00),
BLUE(0x0000FF)
}
当我们需要调用枚举对象的内容时,可以通过valueof获取某个枚举对象的值,或者通过values获取所有枚举对象
Direction.EAST
Direction.valueOf("EAST");
Direction.values()
需要注意,如果指定的名字在枚举类中没有任何匹配,那么valueOf()方法将会抛出参数异常
Kotlin中核面向对象相关的内容就介绍到这里,相关的代码均提交在github中,
本文源码下载:http://xiazai./201706/yuanma/helloKotlin-master().rar
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Kotlin中的面向对象
# Kotlin
# 面向对象实例详解
# 详解Kotlin中的面向对象(一)
# Kotlin基础教程之面向对象
# Kotlin面向对象知识点讲解
# 关键词
# 可以通过
# 面向对象
# 都是
# 不可以
# 我们可以
# 需要注意
# 类中
# 的是
# 访问权限
# 程序设计语言
# 是有
# 将会
# 将在
# 基础上
# 则是
# 没有任何
# 两种
# 可以用
# 当你
相关文章:
微信小程序制作网站有哪些,微信小程序需要做网站吗?
三星网站视频制作教程下载,三星w23网页如何全屏?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
平台云上自主建站:模板化设计与智能工具打造高效网站
金*站制作公司有哪些,金华教育集团官网?
建站主机功能解析:服务器选择与快速搭建指南
c# 在高并发场景下,委托和接口调用的性能对比
建站之星如何快速生成多端适配网站?
如何用5美元大硬盘VPS安全高效搭建个人网站?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
宿州网站制作公司兴策,安徽省低保查询网站?
如何快速搭建响应式可视化网站?
浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
如何用y主机助手快速搭建网站?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
宝塔建站教程:一键部署配置流程与SEO优化实战指南
济南网站制作的价格,历城一职专官方网站?
如何在云指建站中生成FTP站点?
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
制作网站的模板软件,网站怎么建设?
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
详解jQuery停止动画——stop()方法的使用
网站制作话术技巧,网站推广做的好怎么话术?
如何在万网ECS上快速搭建专属网站?
如何高效配置IIS服务器搭建网站?
郑州企业网站制作公司,郑州招聘网站有哪些?
Android自定义listview布局实现上拉加载下拉刷新功能
定制建站模板如何实现SEO优化与智能系统配置?18字教程
,石家庄四十八中学官网?
如何高效利用200m空间完成建站?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
招贴海报怎么做,什么是海报招贴?
湖北网站制作公司有哪些,湖北清能集团官网?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
如何用wdcp快速搭建高效网站?
建站主机选哪种环境更利于SEO优化?
建站之星如何取消后台验证码生成?
,购物网站怎么盈利呢?
制作网站怎么制作,*游戏网站怎么搭建?
盘锦网站制作公司,盘锦大洼有多少5G网站?
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
网站设计制作公司地址,网站建设比较好的公司都有哪些?
大连 网站制作,大连天途有线官网?
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
韩国服务器如何优化跨境访问实现高效连接?
在线教育网站制作平台,山西立德教育官网?
建站之星安装后界面空白如何解决?
如何通过VPS建站实现广告与增值服务盈利?
专业商城网站制作公司有哪些,pi商城官网是哪个?
*请认真填写需求信息,我们会在24小时内与您取得联系。