Kotlin - 类 class、类型别名 typealias

类

Kotlin中所有类的父类是 Any(Java中是Object),它默认提供三个函数:equals()、hashCode()、toString()。 Kotlin中类以及成员属性和成员函数默认都是 final 修饰的,无法被继承和重写。 完整格式:class 类名 可见性修饰符 注解 constractor (参数列表){ }
Backing Field、getter/setter 主构造、次构造 open、override abstract、interface inner data class、componentN()、copy() enum sealed companion object
class Demo{ }

可见性修饰符

修饰符 类成员 顶层声明 对比Java public(默认) 所有地方可见 所有地方可见 public 所有地方可见 internal 模块中可见 模块中可见 default 包中可见 protected 子类中可见 X protected) 子类中可见 private 本类中可见 该文件中可见 private 本类中可见

类型别名 typealias

就是另外取个名称,解决又臭又长的命名。可用于:类、泛型类、内部类、函数类型、泛型函数。格式:typealias 别名 = 类名
//又臭又长
class YouChouYouChang{ fun show() = println("Hello") }
//取别名
typealias AA = YouChouYouChang

val ycyc = YouChouYouChang()
val aa = AA()
ycyc.show() //打印:Hello
aa.show()   //打印:Hello
//类型强转无必要
println(aa is YouChouYouChang)  //打印:true
println(aa is AA)               //打印:true

泛型类:

class Old<T, R>(param1: T, param2: R)
typealias New1 = Old<Int, String>
typealias New2<T> = Old<T, String>

val a = New1(3, "")
val b = New2("", "")

内部类:

class Outter {
    inner class Inner {}
}
typealias AA = Outter.Inner

val in1 = out.Inner()
val in2 = out.AA()

函数类型:

fun old(function: (Int, String) -> Unit, num: Int, name: String) {}
typealias new = (Int, String) -> Unit
fun new(function: new, num: Int, name: String) {}

泛型函数:

typealias new2<T, R> = (T, R) -> Unit
fun <T, R> new2(function: new2<T, R>, param1: T, param2: R) {}
经验分享 程序员 微信小程序 职场和发展