美文网首页从零开始学习Kotlin
第三章 Kotlin基本语法

第三章 Kotlin基本语法

作者: 红尘丶 | 来源:发表于2017-07-06 12:26 被阅读39次

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

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

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

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

    下面开始分析代码:

    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 返回值;

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

    相关文章

      网友评论

        本文标题:第三章 Kotlin基本语法

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