Kotlin 类和对象

前言

  • 你还在把Java当成Android官方开发语言吗?Kotlin了解一下!
  • 2017年Google IO大会宣布使用Kotlin作为Android的官方开发语言,相比较与典型的面相对象的JAVA语言,Kotlin作为一种新式的函数式编程语言,也有人称之为Android平台的Swift语言。

环境以及工具

Android Studio 3.3

类的修饰符

    //----------------------- 类的修饰符-------------------------------------
    //类属性修饰符
//    abstract    // 抽象类
//    final       // 类不可继承,默认属性
//    enum        // 枚举类
//    open        // 类可继承,类默认是final的
//    annotation  // 注解类
    //访问权限修饰符
//    private    // 仅在同一个文件中可见
//    protected  // 同一个文件中或子类可见
//    public     // 所有调用的地方都可见
//    internal   // 同一个模块中可见

类定义

定义类、属性、函数

//-----------------------类定义-------------------------------------
class Hello {
    var name: String = "boyi.chen"
    var age: Int = 100
    fun sayHello() {
        println("hello kotlin")
    }
}
fun main(args: Array<String>) {
   //-----------------------类定义-------------------------------------
    val hello = Hello()
    println(hello.name + ":" + hello.age)//输出结果-------------------------boyi.chen:100-------------------------

}

主构造函数、次构造函数

//-----------------------主、次构造函数-------------------------------------
class Student constructor(name: String) {
    //属性初始化
    // also在函数块内可以通过 it 指代该对象
    val firstProperty = "First property: $name".also {
        println(it)
    }

    constructor(name: String, age: Int) : this(name) {
        println("次构造函数->name is $name : age is $age")
    }

    init {
        println("初始化块->name is $name")
    }
}
fun main(args: Array<String>) {
     //-----------------------主、次构造函数-------------------------------------
    //如果类有主构造函数,每个次构造函数都要,或直接或间接通过另一个次构造函数代理主构造函数
    val student = Student("boyi.chen")

//    *********************************输出结果*********************************
//    First property: boyi.chen
//    初始化块->name is boyi.chen
//    *********************************输出结果*********************************
}

嵌套类

类可以嵌套在其他类中

//-----------------------嵌套类-------------------------------------
class Outer {
    private val name: String = "boyi.chen"

    class Inner {
        val age: Int = 999

    }
}

fun main(args: Array<String>) {
    //-----------------------嵌套类 -------------------------------------
    println(Outer.Inner().age)//输出结果-------------------------999-------------------------
}

内部类

类可以标记为 inner 以便能够访问外部类的成员。内部类会带有一个对外部类的对象的引用

//-----------------------内部类-------------------------------------
//内部类使用 inner 关键字来表示
//内部类会带有一个对外部类的对象的引用,所以内部类可以访问外部类成员属性和成员函数。
//要访问来自外部作用域的 this,我们使用this@label,其中 @label 是一个 代指 this 来源的标签
class Outer2 {
    private val name: String = "boyi.chen"
    val name2: String = "boyi.chen2"

    inner class Inner2 {
        val temp: String = name
        val objects = this@Outer2
    }
}

fun main(args: Array<String>) {
    //-----------------------内部类-------------------------------------
    println(Outer2().Inner2().temp)//输出结果-------------------------boyi.chen-------------------------
    println(Outer2().Inner2().objects.name2)//输出结果-------------------------boyi.chen2-------------------------
}

匿名内部类

//-----------------------匿名内部类-------------------------------------
interface OnClickListener {
    fun test()
}
class Test {
    var name = "匿名内部类"

    fun setOnClickListener(test: OnClickListener) {
        test.test()
    }
}

fun main(args: Array<String>) {
 //-----------------------匿名内部类-------------------------------------
    val test = Test()//输出 接口定义的方法在匿名内部类中实现
    test.setOnClickListener(object : OnClickListener {
        override fun test() {
            println("接口定义的方法在匿名内部类中实现")
        }
    })//输出结果-------------------------接口定义的方法在匿名内部类中实现-------------------------
}

源码

请关注公众号并在后台回复:kotlin

Kotlin重构系列分享教程

Kotlin环境搭建
Kotlin重构初体验之告别FindViewById
Kotlin基本类型
Kotlin 控制语句 if when for while
Kotlin返回与跳转

Kotlin重构如何兼容原先的ButterKnife、EventBus3.1
当ButterKnife8.8.1碰到AndroidX怎么办
Githup教程开源项目

Python爬虫系列分享教程

Python爬虫之旅之Selenium库的使用
Python爬虫之旅之豆瓣音乐

请关注我(分享日常开发)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值