欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java 转 Kotlin 快速入门①

程序员文章站 2022-05-28 18:36:58
...

java 转 Kotlin 快速入门①

本为参考kotlin文档,先感谢kotlin语言开发者、kotlin文档编写者、kotlin文档中文翻译者等:
新入手,如有错误烦请指出,谢谢!

  • AS新建Android工程使用Kotlin
  • 导包
  • 作用域
  • 函数定义
  • 感谢

AS新建Android工程使用Kotlin
使用新版AS是可以直接使用kotlin开发Android项目的。如下新建一个项目
java 转 Kotlin 快速入门①

可以看到新版的AS有一个“Include Kotlin support”的勾选,就是让我们去引入kotlin的相关支持的配置。后面的步骤基本和原来的一致。
java 转 Kotlin 快速入门①

从生成的Activity文件可以看出,文件后缀是.kt的,这个是符合kotlin语言,因为和原谷歌Android的sdk是兼容的,所以导入的包名基本一致。下面一点点看过去

导包
- 包名不等同于文件夹名称
- 包名不支持静态导入
- 导入的包名可以使用关键字“as”给它取别名 //这点和python一样。
- 如果没有声明包名,则使用默认的 default 包

import android.os.Bundle 
import android.support.v7.app.AppCompatActivity as ACA //取个别名
class MainActivity : ACA() {
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_main)
     } 
 }

注:在AndroidManifest.xml中引用的class,都看包名,不看文件夹层次。

关键词解释:
模块 : 可以理解为当前这个文件
类 : 和java的类差不多,只是一个模块中可以有多个类(无论是否是public)
函数 : 也叫做“方法”,可以直接写在模块中,可以不写在类中的

作用域:
- private 声明的成员 只在这个类中可见(包括它的所有成员);
- protected 和private一样,只能在子类使用,不能声明在顶部;
- internal 在这个模块中开放,及它的内部成员;
- public 对所有模块开放,调用该成员需要导入对应包,什么都不写就默认是public。

基本和Java写法类似,只是多了个internal,相当于用在顶部的protected。

解释看不懂就看下面一段代码就明白了,红色下划线的表示错误的。
java 转 Kotlin 快速入门①
编译器帮我们检查出来了错误。
通常把最外面一层称做顶部,然后就是类中,再就是方法体中。

顶部除了protected,其他都可以用;
类中就全部可以使用;
方法体中是不需要声明作用域的这点和Java写法一样。

看到public是灰色的,表示默认就是public的,就是说如果你忘了写类似的作用域,它就自动给你一个public,这点和Java不一样,要注意。(所以MainActivity的class前面没有写public)

关键符号 : 解释:
使用 “ :”冒号 表示所属的意思,
- 比如 “ fun 某函数():类型 ” ,就表示这个函数的返回值是这个类型;
- 在函数列表中如果是变量的话 “ a:Int ” 就表示这个参数a是需要整型的;
- 如果是类的话,例如 “A类:B类”,就说明A是B的子类。

函数定义

fun 方法名称(参数列表):返回值类型{
//方法体
}

  • 函数定义的话需要使用关键字“fun”
  • 方法名称和java的要求一样,只能下划线和字母开头
  • 参数列表写法 成员名称:类型名称 例如 a:Int

如果函数只有一个表达式,或者内容可以写成一个表达式,则可以将函数写法简单化:

fun 方法名(参数列表):返回类型 = 方法体

如果函数没有返回值,返回值类型可以写成“Unit”
或者省略不写。
另外需要注意kotlin可以函数包函数,就像类里面包函数差不多。

//类中包函数
class Test {
    fun test() {//成员函数
    }
}
//函数中包函数
fun Test2(){
    fun test2(){//局部函数
    }
}

感觉函数和类有点分不清了,调用的时候也几乎一样的,调用顶部方法只需要包名打点调用即可。不过需要注意的是类可以打点调用它的成员函数,函数不能打点调用它的局部函数

如果是在Android环境下的话,要覆写一个方法,需要关键字“override”写在fun前面,表示覆盖父类的这个方法。
另外稍微解释一下为什么 Bundle后面带?,意思是 类型后面加?表示这个参数可为空。

感谢:
https://www.gitbook.com/book/huanglizhuo/kotlin-in-chinese/details
http://kotlinlang.org/docs/reference/