美文网首页
Kotlin 类对象和接口笔记

Kotlin 类对象和接口笔记

作者: 闪客飞飞 | 来源:发表于2020-12-21 16:48 被阅读0次

接口
interface Clickable{
fun click()
}
class Button :Clickable{
override fun click()=println("click")
}
在类名后面使用冒号来替代java 中的 extends 和 implements 关键字
和java 一样一个类能实现多个接口

继承,kotlin 中类默认都是final 的如果需要创建一个允许子类继承的类需要open 来修饰这个类如果方法不允许被重写
可以用final 修饰。

可见性修饰符:
public 所有的地方可见 internal 模块中可见多模块细节的封装protected 子类中可见 private 类中可见

内部类和嵌套类:默认是嵌套类
在类中声明另一个类这样做可以使辅助类放到靠近他被使用的地方。
嵌套类 : static class A (java) class A (kotlin)
内部类 : class A (java ) inner class A(kotlin)
嵌套类不持有外部类的引用 而内部类持有外部类的引用

密封类:定义受限制类的继承结构
关键字 sealed 类当为父类添加一个sealed 的修饰符 对可能创建的子类会做出严格的限制。
当使用when 做判断的时候也不会再添加默认的分支

类初始化:主构造方法和初始化语句块 constructor init
class User(val name:String)

数据类:
data class Client(val name:String, val age:Int)

类委托 by
class DelegatingCollection<T>(innerList:Collection<T> =ArrayList<T>):Collection<T> by innderList{}

关键字Object:声明一个类与创建一个类的实例结合起来
多种情况下出现,都遵循同样的核心理念:这个关键字定义一个类并同时创建一个实例。
场景:
1.对象声明是定义单例的一种方式。
2.伴生对象可以持有工厂方法和其他与这个类相关,但是再调用时并不依赖类实力的方法
3.对象表达式来替代java 的匿名内部类。

(1) 对象的声明:创建单例易如反掌
(2) 伴生对象:工厂方法 静态成员的地盘
companion 关键字来标记 可以直接通过类名来访问对象的方法和属性
class A{
companion object{
fun bar(){}
}
}
伴生对象中可以实现接口,
class A{
companion object:接口{
fun bar(){}
}
}
伴生类的扩展函数
fun A.Compaanion.fromjson(json:String):Person{}

小结:
1.kotlin 和 java类似包含默认的实现。
2.所有的声明默认都是final public
3.想要声明被继承的类 用 open
4.internal 声明在同一模块中可见
5.嵌套类不是内部类,使用inner 来存储外部类的引用
6.sealed 类的子类只能嵌套在自身的声明中
7.初始化语句块和从构造方法 为初始化类实例提供了灵活性
8.使用field 标识符在访问器的方法体中引用属性的支持字段
9.数据类提供了编译器生成的equals,hashcode,toString(),copy等方法
10.类委托帮助避免在代码中出现许多相似的委托方法
11.伴生对象的声明定义单例的方法
12.伴生对象替代了java 静态方法和字段的定义
13.半生对象和其他对象一样,可以实现接口,也可以拥有扩展属性和函数

相关文章

网友评论

      本文标题:Kotlin 类对象和接口笔记

      本文链接:https://www.haomeiwen.com/subject/xjrrnktx.html