一周入门Kotlin(一)
来源:互联网 发布:我知谁掌管明天 歌词 编辑:程序博客网 时间:2024/06/05 05:05
Kotlin是最近IO大会推荐的一级语言,也是我们学习的主流方向,其语法实际上不难,融合了很多优秀语言的特性,如面向过程C语言思想。OC语言的代理和类扩展思想。lambda表达式的精简等等。接下来你会想如何学习这个东西又不浪费时间呢。本教程以java语言的思维进行转换学习,一周带你入门Kotlin。
搭建环境
这里我使用的是mac环境,但是我想应该没多大问题,首先该语言是android studio3.0全面支持的,其下载地址是Android Studio预览版。如果在2.3的工具中使用如下教程。
Kotlin的技术地址做了大量的介绍,你可以在官网查看技术的实现.
- 创建新的应用成功
- 找到android studio 的action工具
- 将java工程自动转换成kotlin工程
- 转换后的结果如下
类的使用
声明一个简单类
1.创建kotlin文件,如果创建 你会发现该文件的后缀是kt
2.现在我们创建一个Person类,代码如下
class Person { //1.声明了2个变量 他们的类型分别是String和Kootlin中的Int //2.在Kotlin中,基本类型已经不能使用 只能使用kotlin支持的Int Double Long 等 //3.var和val都代表声明一个对象 val声明的对象是无法重新赋值 //4.声明的属性必须默认先赋一个默认的值 //5.内部自动为属性创建setter+getter方法 val name: String ="" var age: Int =0}
创建一个子类
现在,我们接着创建一个学生类 该类是Person的子类。这里有一点要主要的,默认如果一个类被别的类继承,那么他必须添加open关键字
open class Person { //声明了2个变量 他们的类型分别是String和Kootlin中的Int var name: String ="" var age: Int =0}
Student类的创建如下,如果你创建了Person类,系统会为你默认创建一个空参构造器:
// 这里可以看出Student类继承Person并继承Person的无参构造器class Student : Person() { // 默认每个学生都有3个课程 var courses :Int =3 // 默认每个学生身高1.70米 var height: Double =1.70}
构造器创建
在Kotlin中,构造器分为2种,一种是主构造器,一种是次构造器。主构造器是在类创建的时候顺便指定的,比如我们想在Student类创建的时候指定名称和课程数,那么类的创建如下:
//1.在构造器创建的参数也会让该类内部自动为属性创建setter+getter方法//2.因为name在父类已经声明过了 这里不需要var关键字class Student(name: String ,var courses :Int =3) : Person() { // 默认每个学生身高1.70米 var height: Double =1.70}
那么问题来了,如果你想在一个类中创建多个次构造器,可以这么写:
class Student(name: String ,var courses :Int =3) : Person() { // 默认每个学生身高1.70米 var height: Double =1.70 //1.这里的构造必须使用constructor关键字 必须重写主构造器 //2.主构造器我们不传递courses就使用默认的3 //3.次构造器默认不创建setter+getter方法,也不能有val/var关键字,它不会在该类中创建属性 //4.如果该构造器不用赋值 你完全可以去掉方法体的{ } constructor(nameValue:String,ageValue:String):this(nameValue)}
方法的创建
学生应该有学习行为,这里没有方法的说法 我们称为函数。所以我们可以为学生创建一系列的方法:
class Student(name: String, var courses: Int = 3) : Person() { var height: Double = 1.70 //1.fun代表创建一个study函数 传入课程名courseName 返回成绩 类型为Int //2.每个语句都没有;作为结尾 这是他的特点 fun study(courseName: String): Int { if (courseName.equals("语文")){ return 99 } return 80 } //如果一个方法返回一个数据并只用了一行代码 那么可使用如下写法 fun printf():String = "$name 的身高是 $height" //如果一个方法不返回数据 可以用Unit代替 你可以认为是void 当然:Unit也可以不写 fun play():Unit{ Log.i("IT520","$name 正在玩!") }}
setter/getter方法
默认情况下属性会自动生成setter/getter方法 这类似于OC的做法。但是我们也可以重写这两个方法,只需要在属性后面声明即可,而field指向的就是该属性,因为kotlin不运行直接方法该对象。
class Student(name: String, var courses: Int = 3) : Person() { var height: Double = 1.70 get() = field set(value) { field =value +0.01 }}
类静态变量
一般在java语言中如果使用静态变量,必须使用static关键字,如果想初始化静态代码块,可以使用static{ }.kotlin提供了类型的功能,比如我们想在Student中创建3个课程的常量,可以这么写:
class Student(name: String, var courses: Int = 3) : Person() { //该模块下的代码在大部分其他类中都可以调用 companion object{ public val MATH : Int =1 public val CHINESE : Int =2 public val ENGLISH : Int =3 }}
对象的使用
对象的创建
还记得上面我们创建的构造器吗?
class Student(name: String, var courses: Int = 3) : Person() { ...}
创建的代码可以如下,var代表声明一个变量:
//1.创建对象没有了new关键字//2.构造器第二个参数就算不传递 也可以使用默认的//3.每句代码都没有;var s1=Student("lean")var s2=Student("zhangsan",5)//4.如果一个对象不想马上创建 可以引向null 但是声明必须加? 表示该对象可以为nullvar s3: Student? = null//5.如下添加了?表示 如果s3对象为null 则不调用s3?.printf()
调用setter/getter方法
安卓大部分setter/getter方法都可以
class Student(name: String, var courses: Int = 3) : Person() { var height: Double = 1.70 get() = field set(value) { field =value +0.01 }}//调用内部的setters2.height=1.75//调用getterval height: Double=s2.height//打印某个变量Log.i("IT520","$height")
扩展类的功能
有时候 你使用的第三方库 或者官方的代码用的不爽 如果是java语言的话你可以使用包装类来添加功能,但是kotlin还提供了类似OC的一个功能如下:
operator fun ViewGroup.get(index: Int): View = getChildAt(index)
对,operator操作符就是扩展方法的操作符,该句代码放在某个文件中即可。这里我们扩展的ViewGroup类,为他添加一个get方法。
Kotlin Android Extensions
Android Extensions是有Kotlin官方提供的一个可以帮助我们在代码区获取控件并处理的工具,其网址:Kotlin Android Extensions
在build.gradle 文件的最上面添加:
apply plugin: 'kotlin-android-extensions'
在代码类中添加
import kotlinx.android.synthetic.main.布局名.*
如果在布局中有个控件
<TextView android:id="@+id/hello" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello World, MyActivity" />
在onCreate()方法中,可以这样调用:
hello.setText("Hi!")
- 一周入门Kotlin(一)
- 一周入门Kotlin(一)
- 一周入门Kotlin(二)
- 一周入门Kotlin(三)
- 一周入门Kotlin(四)
- 一周入门Kotlin(五)
- kotlin入门学习(一)
- kotlin入门(一)helloworld
- Kotlin Android入门学习一
- Kotlin开发Android入门(一)
- Kotlin基础入门(一)
- Kotlin Reference(一)-入门指南
- Kotlin入门____基础语法(一)
- Android kotlin入门与基础语法一
- Kotlin从入门到“放弃”(一)
- Kotlin 从入门到实战(一)
- Android中Kotlin简单入门(一)
- Kotlin系统入门与进阶(一)
- Runtime类--Java基础062
- 【android】View的事件体系3-弹性滑动
- Android Studio2.2.2下安装配置Kotlin教程
- 蒙特卡洛方法靠谱程度不高却受追捧
- Jacobian矩阵和Hessian矩阵
- 一周入门Kotlin(一)
- Android学习随笔
- HDU 4734 F(x)
- 策略模式
- WebRTC源码分析二:音频模块结构
- SMTP邮件postfix
- 从变量不可变到编程范式
- 数组浅析
- 开通博客的第一天