java 转 Kotlin 快速入门①

来源:互联网 发布:梦三国2mac版本 编辑:程序博客网 时间:2024/06/08 01:47

java 转 Kotlin 快速入门①

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

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

AS新建Android工程使用Kotlin
使用新版AS是可以直接使用kotlin开发Android项目的。如下新建一个项目
Create New Project示例图

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

从生成的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。

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

顶部除了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/

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 高铁票出票失败怎么办 高铁票名字打错怎么办 高铁票姓名错了怎么办 高铁票弄丢了怎么办 用过的车票丢了怎么办 高铁票被水洗了怎么办 沈阳地铁卡丢了怎么办 火车票没写检票口怎么办 吃鸡听的脚步声距离太近怎么办 检票时车票丢了怎么办 高铁出站没检票怎么办 高铁来不及取票怎么办 被发现假的增值税发票怎么办 高铁票身份证验证失败怎么办 网上订的火车票查不到怎么办 已经参加工作想学个本科证怎么办 火车晚点耽误下一趟列车怎么办 门外装监控没有预留电线怎么办 框架柱主筋柱顶预留长度不够怎么办 遇到很嚣张的人怎么办 在地板砖上铺木地板卧室门怎么办 宝宝打预防针的本子丢了怎么办 宝宝打预防针本子丢了怎么办 打疫苗的本子丢了怎么办 麦客收割机麦秸里加麦粒怎么办 高铁乘务员身高不够怎么办 坐火车买到站票怎么办 买上车补票原票怎么办? 买的商务座补票怎么办 12306账号被别人登录怎么办 飞机不提供餐食怎么办 12306退票支付宝失败怎么办 12306重复支付怎么办支付宝 支付宝登的12306账号怎么办 没买儿童高铁票怎么办 网上订的机票怎么办托运 半夜买高铁票不出票怎么办 轻轨少买了一站怎么办 高铁火车票丢了怎么办 如果高铁票丢了怎么办 高铁票丢了怎么办 报销