类与对象
一般类

抽象类

嵌套类
是一种静态内部类

内部类

修饰符

属性





构造器


继承





父类val,子类var是可以的,反之不行
接口




函数重写
实现多个接口是,可能会遇到同一方法继承多个实现的问题
interface A {
fun foo() { print("A") } // 已实现
fun bar() // 未实现,没有方法体,是抽象的
}
interface B {
fun foo() { print("B") } // 已实现
fun bar() { print("bar") } // 已实现
}
class C : A {
override fun bar() { print("bar") } // 重写
}
class D : A, B {
override fun foo() {
super<A>.foo()
super<B>.foo()
}
override fun bar() {
super<B>.bar()
}
}
fun main(args: Array<String>) {
val d = D()
d.foo()
d.bar()
}
枚举类




扩展



扩展函数不具备运行时的多态
//父类
open class Shape2
//子类
class Rectangle2:Shape2()
//针对Shape2定义的扩展函数
fun Shape2.getName()="Shape2"
//针对Rectangle2定义的扩展函数
fun Rectangle2.getName() = "Rectangle2"
fun printClassName(s:Shape2){ //静态解析
println(s.getName())
}
fun main(){
printClassName(Rectangle2())
}
打印出来是Shape2


数据类与封装类


密封类是一种特殊的抽象类,不能实例化