Android开发学习之路--Kotlin之类及对象
Posted 东月之神
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android开发学习之路--Kotlin之类及对象相关的知识,希望对你有一定的参考价值。
前言
1 类和继承
1.1 类
class MyClass
1.2 构造函数
一个主构造函数以及多个二级构造函数
class Person constructor(firstName: String)
//也可以省略constructor,写成:
class Person(firstName: String)
在@Inject的时候不能省略constructor
class Person @Inject constructor(firstName: String)
初始化代码可以放在以init做前缀的初始化块内
class Person(firstName: String)
init
Log.d("Person", Person initialized with name $name")
声明属性并在主构造函数中初始化:
class Person(val firstName: String, val lastName: String, var age: Int)
1.3 继承
所有的类都有共同的父类 Any. 声明一个明确的父类,需要在类头后加冒号再加父类:
open class Base(p: Int)
class Derived(p: Int) : Base(p)
kotlin中所有的类都是final, 允许别的类继承这个类需使用open或者abstract关键字
1.4 抽象类
抽象类或函数默认是带着的open注解的
open class Base
open fun f()
abstract class Derived : Base()
override abstract fun f()
1.5 伴随对象
类似java的静态方法调用
class MyClass
companion object Factory
fun create(): MyClass = MyClass()
1.6 内部类
类可以标记为 inner 这样就可以访问外部类的成员.内部类拥有外部类的一个对象
引用
class Outer
private val bar: Int = 1
inner class Inner
fun foo() = bar
val demo = Outer().Inner().foo() //==1
1.7 匿名内部类
tv_hello.setOnClickListener(object: View.OnClickListener
override fun onClick(v: View?)
)
//或者lambda表达式
tv_hello.setOnClickListener
1.8 嵌套类
类可以嵌套在其他类中
class Outer
private val bar: Int = 1
class Nested
fun foo() = 2
1.9 延迟初始化属性
属性加上 lateinit 修饰符
laterinit var name: String
1.10 模块
internal 修饰符是指成员的可见性是只在同一个模块中才可见的
2 扩展(extension)
2.1 函数扩展
fun MutableList<Int>.swap(x: Int, y: Int)
val temp = this[x] // this 对应 list
this[x] = this[y]
this[y] = tmp
常见的扩展比如toast,可以扩展Context类
fun Context.toast(message: String, length: Int = Toast.LENGTH_SHORT)
Toast.makeText(this, message, length)
2.2 属性扩展
扩展属性,获取list中的最后一个index
val <T> List<T>.lastIndex: Int
get() = size-1
3 数据类
我们经常创建一个只保存数据的类, 用 data 标注
data class User(val name: String, val age: Int)
如果数据类有无参构造函数,需将主构造函数中,将成员属性初始化。
data class User(val name: String = "", val age: Int = 0)
4 泛型
4.1 泛型类
和Java类似,这里的T就是泛型的对象,声明一个泛型类
class Box<T>(t: T)
var value = t
创建实例
val box: Box<Int> = Box<Int>(1)
4.2 泛型函数
声明一个泛型函数,T表示类型,这里处理了Int,String和其他
fun <T> print(content: T)
when (content)
is Int -> println(content)
is String -> printlin(content)
else -> println("unkown type")
以上是关于Android开发学习之路--Kotlin之类及对象的主要内容,如果未能解决你的问题,请参考以下文章
Android开发学习之路--Kotlin之Android开发使用心得和注意事项
Android开发学习之路--Kotlin之常用表达式及函数
Android开发学习之路--图表实现(achartengine/MPAndroidChart)之初体验