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】。文章转载请联系作者。
评论