Kotlin基础 5

来源:互联网 发布:022型导弹艇知乎 编辑:程序博客网 时间:2024/06/03 13:41

面向对象的基本概念.

 1. 本质上就是解决如何用程序描述世界的问题. 2. 讨论如何把实际存在的东西映射成程序的类和对象 3. 一种程序设计的思路、思想、方法

Kotlin中的 继承与接口实现

interface A{    fun A()}interface B{    fun B()}open class Chind{    fun function(){        println("function")    }}open class Cww{    fun log(){        println("log")    }}class C: Chind(), A,B{  //继承Child 实现 a/b    override fun A() {    }    override fun B() {    }}

Kotlin中的 常量与变量

var是一个可变变量,这是一个可以通过重新分配来更改为另一个值的变量。这种声明变量的方式和Java中声明变量的方式一样。

val是一个只读变量,这种声明变量的方式相当于java中的final变量。一个val创建的时候必须初始化,因为以后不能被改变。

    val name:String = "张三"    name = "李四"  //编译不通过,不可变类型 final
    var name:String = "张三"    name = "李四"  //编译通过,可变类型

编译期常量(java的 static final )

    const val TEXT: String = "Hello"

Kotlin中的 所有类的父类 Any

在Kotlin中所以的类都有一个默认的父类Any,这个类似于Java中的Object。

object 关键字

ps:简单来说,就是普通的java单例, 简单的单例

 1. 值有一个实例的的类 2. 不能自定义构造方法 3. 可以实现接口,继承父类
//声明一个单例类object Person{    fun getName():String{        return "啦啦啦"    }}fun main(args: Array<String>) {    println(Person.getName())}

Kotlin中的 静态方法

fun main(args: Array<String>) {    Latitude.toDouble(3.0)}class Latitude{//class Latitude private constructor(){ 如果是工具类,私有构造方法    companion object{        fun toDouble(double: Double){            println("啦啦啦啦啦 取到值 $double")        }    }}

Kotlin中的 扩展函数

fun main(args: Array<String>) {    //输出结果 abcabcabcabcabc    println("abc".multiply(5))}//定义String的扩展函数fun String.multiply(max:Int):String{    var stringBuilder = StringBuilder()    for (i in 0 until max){    //定义循环0..max 区间        stringBuilder.append(this)    }    return stringBuilder.toString()}
fun main(args: Array<String>) {    //输出结果 abcabcabcabcabc    println("abc" * 5)    //扩展成员    println()}//定义String的扩展函数 -> 并重载操作符operator fun String.times(max:Int):String{    var stringBuilder = StringBuilder()    for (i in 0 until max){    //定义循环0..max 区间        stringBuilder.append(this)    }    return stringBuilder.toString()}//定义String扩展成员val String.a : String    get() = "abc"

Kotlin中的 属性代理

class Delegates{    val hello by lazy{        "hellWorld"    }    val hello2 by X()    var hello3 by X()}//模拟 lazy的过程class X{    private var value:String? = null    operator fun getValue(thisRef: Any?, property: KProperty<*>): String{        println("getValue:$thisRef -> ${property.name} ")        return value?:""    }    operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {        println("setValue:$thisRef -> ${property.name} = $value")        this.value = value    }}fun main(args: Array<String>) {    val delegates = Delegates()    println(delegates.hello)    println(delegates.hello2)    delegates.hello3 = "啦啦啦"    println(delegates.hello3)}
原创粉丝点击