美文网首页
Kotlin基本语法

Kotlin基本语法

作者: 爱写代码的小王子 | 来源:发表于2020-07-15 21:06 被阅读0次

类和对象

  • 提供默认构造函数的类
class Person constructor(){}
  • 没有注解和修饰符,则construction可用省略
class Person(){}
  • 有private修饰 不能省略construction
class Person private constructor(){}
  • 提供默认构造函数的类
class Person(name: String,age: Int){}

注意:这个变量 name age是临时变量,只能在init或者属性初始化的时候访问 外部无法访问

  • 创建对象
var xw = Person("xw",30)
  • 声明构造函数的参数为成员变量 val 只提供get方法 var提供get/set方法
class Person(val name: String,val age: Int){}
var xw = Person("xw",30)

注:该变量为类的成员变量,外部不可以通过提供的set或者get方法直接访问

  • 父类和子类
//父类
open class Father(name:String){}
//子类,必须调用父类的默认构造方法,有默认值jack的情况如下
class child(): Father("jack"){}
//没有默认值 可以通过子类的构造函数接收外部传递的值
class child(name:String): Father(name){}
  • 属性和域 类内部定义的常量或者变量就是属性
//使用private控制外部访问
class Person{
    val age: Int = 20 //内、外只能读 无法更改
    var name:String = "JackChen"//内部可读可写 外部只能读
        private set(value) {
        field = value
    }
}
  • 属性判空 通常有3种方式
val len1 = wife?.length//如果为空则不执行后面操作 不空则执行
val len2 = wife!!.length//强制说wife肯定不为空
 //let判空
 len1.let {
 //不为空则执行这个代码块
        }
  • 懒加载 关键字by lazy 只能作用于val
val address:String by lazy { "大街上" }//懒加载
  • 延迟加载 关键字lateinit 只能作用于var
lateinit var childName:String //延迟加载
fun  setup(){
    childName = "jack"
}
  • 函数及抽象函数
//参数没有默认值
fun add(a: Int,b :Int) = a + b
//参数是默认值的函数
fun work(money: Int = 10000,name: String = "xw"){
    println("${name}学习Android开发需要${money}元")
}
//可变参数的函数
fun add(vararg array:Int){
    var result = 0
    for (value in array){
        result += value
    }
    println(result)
}

抽象函数常常位于抽象类中

abstract class BaseAbs

abstract class Figure : BaseAbs() { // 1️⃣
    abstract fun onDraw()       // 抽象函数,无函数体 2️⃣
    abstract val name: String   // 抽象属性,无初始值,无getter和setter访问器 3️⃣
    val cname: String = "几何图形"  // 具体属性 4️⃣
    fun display() = println(name)  // 具体函数 5️⃣
}

抽象函数和类的具体实现

// Figure具体实现类
class Ellipse: Figure() {

    override val name: String
        get() = "椭圆形"

    override fun onDraw() {
        println("绘制椭圆形...")
    }
}
class Triangle(override val name: String) : Figure() {

    override fun onDraw() {
        println("绘制三角形...")
    }
}
class Rectangle: Figure() {

    override val name: String = "矩形"

    override fun onDraw() {
        println("绘制矩形...")
    }
}

相关文章

网友评论

      本文标题:Kotlin基本语法

      本文链接:https://www.haomeiwen.com/subject/mligcktx.html