Kotlin 入门笔记(一)
变量
使用
val和var定义变量val表示所修饰的变量是不可变的(immutable),一旦赋值不能再重新赋值,类似于 Java 中用final修饰变量。var表示所修饰的变量是可变的,即可以重新赋值。定义变量的形式:
val sum: Int = 0,注意变量类型与变量名以冒号(:)分割,并写在冒号后面。变量默认不能为
null,如要为null需在类型后面显式声明val sum: Int?var sum: Int?使用问号(
?)对对象进行判空sum?.toFloat()
函数
通过关键字 fun 生命一个函数,
fun myFun(params: String): String {}。
条件控制:when/if-else
不超过两种情况,使用
if-else。超过两种以上情况,使用
when。注意:
when表达式的条件必须是完备的。经常配合后面会讲的密封类一起使用。
类
使用关键字
class定义新的类,使用冒号(:)声明继承关系。如class A : B,表示创建一个新的类A,它继承自类(或接口)B。普通类默认不可继承,需要添加关键字
open才可以。如open class A。Java 中默认可继承,需要添加关键字final才能禁止继承。【与 Java 一致】抽象类使用关键字
abstract定义,不可被实例化,能被继承。如abstract class A。【与 Java 一致】仅能继承一个父类,可以继承多个接口(
interface)。类中的成员(包括方法和属性)默认不可重载,需要显式添加
open关键字。成员默认访问属性为
public。成员的初始化顺序按定义顺序,可利用已定义的成员初始化新的成员。
如需要在类对象构造时写复杂的逻辑,在
init {}语句块中实现。通过
constructor定义类的构造函数,有主构造函数和次构造函数之分。主构造函数出现在函数定义位置,可以省略关键字constructor。可以且仅可以在主构造函数中,定义类的成员变量。
次构造函数必须调用主构造函数。
支持定义内部类,默认不可访问外部类的成员。如果需要,必须添加关键字
inner声明。这点与 Java 相反,Java 默认是非静态内部类,默认可访问外部类成员,除非加关键字static修饰。
Kotlin 设计这点主要是为了避免 Java 中由内部类使用不当引起的内存泄露问题。
接口
使用关键字 interface 定义接口,如
interface IInterface。接口支持含有默认实现,含有默认实现的方法或属性,子类实现该接口时,可不必实现。
枚举类
通过关键字
enum class声明一个枚举类。枚举可以拥有构造参数。
提供了一些内置属性和方法。
values()用于获取所有枚举值。name属性用于获取枚举的名称(字符串)ordinal 属性获取枚举的位置(从 0 开始)
数据类:data class
类似于 C 语言中的 struct,是一堆数据的集合。此外,还包含一些操作数据的方法。
默认提供了
equals()、hashCode()、toString()、copy()等方法。
密封类/接口:sealed class/interface
注意与枚举的区别:密封类是子类固定,枚举是对象固定。
最佳实践
类中,属性的定义通常放在方法的前面。
尽量使用
data class封装数据实体。封装网络请求的状态时,常用密封类。
版权声明: 本文为 InfoQ 作者【如浴春风】的原创文章。
原文链接:【http://xie.infoq.cn/article/134e10c27fd4290e3cc83389e】。文章转载请联系作者。










评论