Kotlin基本熟悉

通过创建一个kotlin文件来了解Kotlin的基本使用


一、kotlin类文件


1.data class 数据类

data class KotlinBean(
    var id: String = "",
    var user: String = "",
    var userName: String = ""
)

1.1.数据类对象也就是Java中我们常用的bean实体类,不过kotlin的相较于Java的bean类具有代码简洁性,可阅读性,以及代码量少了很多;
比如:

  • Java中需要对bean参数需要定义大量的get/set方法,
  • 如果需要使用该类的每一个参数的构造函数,Java还需要对每一个参数都要构造一次。



1.2.kotlin构造函数的使用
Kotlin可以对Kotlin定义的data class类有许多操作

class KotlinTest{
    val a = KotlinBean()
    val b = KotlinBean("id")
    val c = KotlinBean("id","user")
    val d = KotlinBean("id","user","userName")
    val e = KotlinBean(user = "user")
    val f = KotlinBean(user = "user",userName = "userName")
}

java中调用data class类时,只支持以下两种

public class JavaTest {
    KotlinBean a = new KotlinBean();
    KotlinBean b = new KotlinBean("id","user","userName");
}


2.Class类文件

2.1.关键字“class”
如:

class KotlinTest{}



2.2.类的构造函数:主构造函数以及辅助构造函数
Kotlin可以有一个主构造函数和多个辅助构造函数

  • 主构造函数:
constructor(id:String)
  • 辅助构造函数:
constructor(id: String,ids:String) : this(id) {}
  • 主构造函数与辅助构造函数的关系:如果类具有主构造函数,则每个辅助构造函数需要通过另一个辅助构造函数直接或间接地委派给主构造函数。 使用this关键字对同一类的另一个构造函数进行委派:
class KotlinTest constructor(id:String){
    constructor(id: String,ids:String) : this(id) {

    }
    constructor(id: String,ids:String,idss: String) : this(id) {
    }
}



2.3.类的实例化

  • Kotlin与java中有所差别
//kotlin
val kotlin = KotlinTest()
//java
KotlinTest java = new KotlinTest()



2.4.kotlin类的继承与依赖

  • Kotlin默认为final类型,不可被继承,需要在class关键字前面加上open关键字,才可以对外开放
//父类
open class KotlinTest{
}

*****************
//子类
class KotlinTest2: KotlinTest() {
}



2.5.kotlin类继承一个父类多个接口的写法:在文件名后加冒号:代表接下来它会继承父类和接口的实现
,如果需要实现更多接口只需要在,后面增加。

class KotlinTest2: KotlinTest(),KotlinInterface {
    override fun interFace() {
    }
}





二、kotlin方法的变量、常量

  • 可变变量(var):来源于(variable)在Kotlin中var定义的参数在该类中属于可以被多次修改,对应Java中的变量
    如:
//var标注的参数是可以被修改的
var name = "Android-var"
private fun method() {
     name = "Android-var2"
 }
//kotlin的var参数转译为Java后
@NotNull
private String name1 = "Android-var";
  • 不可变变量(val):来源于(value),只可以进行一次初始化,不可二次赋值,对应Java中的final变量
val name = "Android-val"
val a: Int = 1
val b = 1       // 系统自动推断变量类型为Int
private fun method(){
val c: Int      // 如果不在声明时初始化则必须提供变量类型
c = 1           // 明确赋值

//如果第二次赋值给他会出现:Val cannot be reassigned
//kotlin的val参数转译为Java后
@NotNull
private final String name = "Android-val";
//验证val中的kotlin参数是否可以获取多个值
 private val msg:String
 get() {
       for (i in 1..3){
           return "as"+i
       }
       return "as"
   }
@Test
fun testValmsg(){
   println(this.msg)
   println(this.msg)
   println(this.msg)
    }
//输出结果:
as1
as1
as1
  • 常量(const val)等同于Java中的public static final 定义的参数
    1.(const val)只能在Top-level(顶层声明),object和companion object的成员中声明,如:
const val name = "name" //Top-level 顶层声明

object Singleton {
    const val name= "name" //在object的成员中声明
    val valStr = "valStr"
}

class MyClass {
    companion object {
        const val name= "name" //在companion object中声明
    }
}

2.不能自定义get()
3.常量(const val)与不可变变量(val)的区别

class KotlinTest {
//kotlin中通过val、const val定义的数据
    val name = "Android"
    companion object{
        const val name1 = "Android-object-const"
        val name2 = "Android-object"
    }
}
//通过转译为java后
@NotNull
private final String name = "Android";
@NotNull
public static final String name1 = "Android-object-const";
@NotNull
private static final String name2 = "Android-object";
通过以上对比可以很方便的看出,在class文件中val 指代的是final类型参数,
而在companion object中的val是private static final 类型参数,
而const val 是public static final类型参数

这篇文章就讲到这里了,主要讲的是kotlin的基本使用适合准备开始学kotlin,或是对kotlin了解不深的朋友。kotlin还有很多有意思的地方,比如:扩展函数,协程,lambda等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芝麻猪oo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值