第三章 Kotlin基本语法

在学习Kotlin的过程中,我们会发现一些java中没有的有趣特性,如表现性,安全性,扩展性,函数支持lambdas等等,在后续章节中会慢慢提现。

上一章节,我们已经完成了hello world的创建,本节我们来看一下源代码,结构如下。

《第三章 Kotlin基本语法》

养成良好的编码习惯,功能分包,命名规范,格式化代码等等都是我们需要注意的地方。为方便后续功能扩展,我创建了BaseActivity,里面暂为空。

《第三章 Kotlin基本语法》

在MainActivity中增加一个Button按钮,并设置点击事件,触发吐司:

《第三章 Kotlin基本语法》

下面开始分析代码:

kotlin其中一个特点就是语句结尾无需使用分号,直接换行即可,类名、属性命名与java类似,使用驼峰。但不建议使用m开头定义属性。

line1-8:与java类似,不解释;

line9:继承BaseActivity,kotlin中没有java中的extends关键字,取而代之的是:,kotlin中新建的类默认是public final类型的,为了能让其他类继承,我们需要加上关键字abstract或open(BaseActivity),圆括号为默认构造方法,每一个被继承的类都必须提供构造方法;

line11:声明一个可变(var)对象btn,类型属于Button,值可为null,类似Java中的:

public Button btn = null ;

同样使用冒号表示具体类型,问好表示可null;

line12:注意到本行使用val表示不可变对象,类似java中final修饰的对象;

line13:等价于line12,kotlin会自动识别数据类型,可省略类型说明,但在实际应用中,最好指明数据类型,以免出现不必要的错误;

line15:重写onCreate方法,不同于java,Kotlin必须有override关键字,且方法定义使用fun,这一点类似JavaScript;

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

}

line22:定义私有方法initView,无参,无返回值可省略,同样方法修饰符与java类似,有public,private,protected,默认不写(作用域有别于java,kotlin中为public final方法),特有的internal(模块(module)级别访问权限)。有参有返回值的公共方法定义如下:

//有返回值 Int,如果仅返回一个表达式可省略{}、return,使用=代替

// public fun add(a:Int,b:Int):Int=a+b

public fun add(a : Int, b : Int) : Int {

return a + b

}

//无返回值,Unit等同于java中的void

public fun equals(a : Int , b : Int) : Unit{

}

line23:获取Button按钮实例,由于声明btn时指定了对象类型,因此这里需使用as关键强转为Button对象,未声明类型则无需强转;

line24:按钮设置监听,区别于java不需要创建匿名内部类,直接使用lambda完成,!!表示对象非空否则抛出异常。kotlin的安全性特性能严格控制NullPointerException的发生,使用一个对象时,必须有安全操作符!!或?来指明一个对象是否非空或可能为空,实例代码:

btn!!.setText(“test”)  //btn非空

btn?.setText(“test”) //btn为空时不执行setText方法,成功避免空指针异常的发生

btn?:Toast.makeText(this@MainActivity,msg,Toast.LENGTH_SHORT).show() //btn为空弹出吐司提示

END。

小结:

1、类需使用open、abstract关键字修饰才能被其他类继承,默认为final,继承使用:左右分别为子类、父类(必带构造方法);

2、val、var定义属性,默认为public,可用:指定属性类型,;

3、方法定义,格式:修饰符 fun  xxx(x: 参数类型): 返回值类型{do something};

4、as关键字用法,强转;

5、?、?:、!!的合理使用可避免空指针异常;

6、lambda支持,代码使用{}括上,参数与函数体分别在->左右;

7、@符号用法:this@XXX,return@XXX 返回值;

更详细的使用,请继续关注后续章节内容。

    原文作者:红尘丶
    原文地址: https://www.jianshu.com/p/2f92122f9e98
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞