Kotlin学习(六)—— 基础巩固,类与继承,Lambda,表达式,计算器

一.类与继承

我们沿用Java的经典案例,人,男人,女人,首先,我们如果要创建一个类,他为男人,他具有姓名,年龄,身高的属性,我们要创建女人,他也有这些属性,但是他们都是人,我们可以抽取出这三个字属性,来看下代码:

Kotlin学习(六)—— 基础巩固,类与继承,Lambda,表达式,计算器_第1张图片

通过这段代码就可以实现我们的抽取例子了。

二.可空参数

在Java中,我们会经常和一个叫做空指针的家伙打交道,但是在kt中,他就能有效的避免空指针,他能做到这点,就是他的可空参数了,我们来看下示例:

Kotlin学习(六)—— 基础巩固,类与继承,Lambda,表达式,计算器_第2张图片

这段代码很多人会写,通过一个方法获取到一个String对象然后去使用,这里如果String对象为空,那么就出现空指针了,我们避免的方法如下:

Kotlin学习(六)—— 基础巩固,类与继承,Lambda,表达式,计算器_第3张图片

可以看到我们需要先拿到对象去判断,这样才能操作,那么来到KT中时如何处理的呢?

Kotlin学习(六)—— 基础巩固,类与继承,Lambda,表达式,计算器_第4张图片

首先我们看到我们定义的方法如果返回一个null,他会直接报错,那么我们加一个可空符号

Kotlin学习(六)—— 基础巩固,类与继承,Lambda,表达式,计算器_第5张图片

你会发现即使我家了?符号依旧无法直接对他使用,这是因为这个对象有可能为空,所以我们不能这样做,那真正做起来要怎样呢?

Kotlin学习(六)—— 基础巩固,类与继承,Lambda,表达式,计算器_第6张图片

也很简单,加个问号调用即可,这样哪怕对象返回了空,那么我们也会使用null关键字代替,当然,我们还以直接return

Kotlin学习(六)—— 基础巩固,类与继承,Lambda,表达式,计算器_第7张图片

如果我们对返回结果十分的自信,认为他怎么都不返回null,那么我们可以加两个感叹号来告知编译器放心编译

Kotlin学习(六)—— 基础巩固,类与继承,Lambda,表达式,计算器_第8张图片

三.Lambda 表达式

Lambda大家都知道使用起来简洁,不过曾经也有人提示说Lambda太简洁了,读起来麻烦。这个就看个人简介了,至少AS默认Lambda来缩写代码我觉得就很不错,Lambda其实你可以理解为匿名函数,为什么呢? 我们先来看一段代码

Kotlin学习(六)—— 基础巩固,类与继承,Lambda,表达式,计算器_第9张图片

这里为了些一个加法的函数,我们分别用了四种写法, 对Kt的函数表达表现的淋漓尽致了

传统写法:
传递两个参数,return一个int

传统函数缩写
就上一个去掉大括号和返回值以及return 直接相等

匿名函数
不写方法名,直接定义一个变量赋值一个函数块再等于结果

Lambda
和匿名函数类似,不过fun括号换成大括号,等号换成箭头号

我们再来看一个遍历的例子

图片: https://uploader.shimo.im/f/NGovB9TYxww8GUEt.png

这段代码中,我定义了一个数组,然后去遍历他首先是传统的for in遍历,当然,数组有扩展函数forEach,我们再过Lambda表达式去显示,不过由于只有一句输出,所有it -> 是可以省略的,最后如果我们仅仅是一句输出,则可以通过两个冒号调用。

四.lateinit var

我们在类中定义一个变量,但是IDE会报错,我们来看下

看了下报错的错误说是需要我们初始化,可是我们并不需要初始化,那么这个时候就需要使用lateinit了,之后再初始化的意思

lateinit只能结合var,不能结合val,val的话需要使用by lazy

五.中缀表达式

中缀表达式的关键字是infix,是做什么作用的呢?

实际上就是省略方法的常规调用点和括号,举个例子吧:

Kotlin学习(六)—— 基础巩固,类与继承,Lambda,表达式,计算器_第10张图片

在这段代码中可以看到,我们的Boy类定义了一个love的方法,我们要做的就是love这个女孩,我们可以通过中缀表达式省略这些点和括号的操作。

六.命令行计算器

我们来一个命令行的小例子,先来直接看代码
Kotlin学习(六)—— 基础巩固,类与继承,Lambda,表达式,计算器_第11张图片
在代码中就可以看到,我需求也写得很清楚了,我们首先请用户输入第一个运算数,然后让其选择运算符,如果超过了则让用户重新选择运算符,紧接着我们让其选择第二个运算数,最终计算结果,我们来看下运行结果
Kotlin学习(六)—— 基础巩固,类与继承,Lambda,表达式,计算器_第12张图片

Github地址:

https://github.com/LiuGuiLinAndroid/Kotlin

如果有兴趣的话,可以加入我的Kotlin学习小组

我的公众号,期待你的关注

你可能感兴趣的:(Kotlin)