如下关于kotlin内容都是本人近期学习整理的kotlin资料,可以对着输入尝试。另外,需要获得完整的笔记链接,可以关注“技术微讯”并输入kotlin即可获取笔记地址。由于时间精力限制,下面分享的是笔记的一部分,kotlin系列会持续更新。
最后提供一个kotlin在线编码的地址:https://try.kotlinlang.org/#/Kotlin%20in%20Action/Chapter%202/2.1/1_HelloWorld.kt
接口相关:
1.一个简单的Kotlin接口使用 interface 关键字来声明,所有实现这个接口的非抽象类都需要实现接口中定义的抽象方法。
2.Kotlin在类名后面使用 冒号 代替了Java中的extends和implements关键字,一个类可以实现多个接口,但是只能继承一个类。
3.override修饰符用来标注被重写的父类或者接口的方法和属性,并且是 强制要求的。
4.如果一个类实现了两个接口,而这两个接口定义了相同的方法,并且都提供了该方法的默认实现,那么该类必须显示实现该方法,否则会在编译时报错;
另外,调用父类或接口的方法,可以使用与Java相同的关键字 super,并在后面的尖括号中指明父类的名字,最后是调用的方法名。
访问性修饰符:open、final、abstract
1.在Kotlin中,类和方法默认都是final的,如果想允许创建一个类的子类,需要使用open修饰符来标示这个类,此外还需要给每一个允许被重写的属性或方法添加open修饰符
2.抽象类中的抽象函数:没有函数体就默认是abstract的,不一定要加上关键字,其访问性始终是open的。
3.抽象类中的非抽象函数:默认是final的,如果需要重写,那么需要加上open修饰符。
4.open、final和abstract这三个访问修饰符都 只适用于类,不能用在接口当中。
5.被重写方法必须加上override修饰符。
可见性修饰符:
public 所有地方可见;internal 模块中可见;protected 子类中可见;private 类中可见
1.Java和Kotlin在可见性上的区别包括以下几点:
在Java中默认的可见性是包私有的,而在Kotlin中,默认的可见性是public的。Kotlin用internal作为包可见的替代方案,它表示“只在模块内部可见”。
2.Kotlin允许在顶层声明中使用private可见性,包括类、函数和属性,这些声明就只在声明它们的文件中可见,这是隐藏子系统实现细节的非常有用的方式。
3.类的扩展函数不能访问它的private和protected成员。
4.Kotlin中,一个外部类不能看到其内部类中的private成员。
内部类和嵌套类:
1.kotlin中是嵌套类,是一个静态内部类,不持有外部类引用,类似java中的内部类
2.把嵌套类变成内部类需要使用inner修饰符,并且访问外部类时需要this@{外部类名}
密封类:定义受限的类继承结构,使用sealed修饰符,对可能创建的子类做出严格的限制,所有的直接子类必须嵌套在父类中。
这时候,我们在when表达式中已经处理了所有Expr的子类,就不再需要提供默认的分支(else分支),假如这时候我们给Expr添加一个新的子类Multi,但是不修改when中的逻辑,那么就会导致编译失败:
解决:1.when中加上该分支 2.when加上默认的else分支
构造方法:
kotlin将构造方法分为两类:
(java中则可以在类中声明一个或多个构造方法)
1.主构造方法:主要而简洁的初始化类的方法,并且在类体外部声明。
2.从构造方法:在 类体内部声明。
3.红色部分是主构造方法,简化写法:class User(val nickname: String)
(主构造方法:定义参数及参数类型属性)
完整写法:
4.子类继承父类,并传递参数
5.kotlin中假如一个类没有声明任何的构造方法,将会生成一个不做任何事的默认构造方法,如果有子类继承了它,那么必须显示地调用父类的构造方法
6.定义从构造方法:constructor
7.子类调用父类的从构造方法:super
8.子类调用自己的另一个构造方法:this
实现在接口中声明的属性:
网友评论