抽象类

abstarct来声明一个类为抽象类。
嵌套类即为类内部的内部类。
inner来比奥是要给内部类。
内部类有个对外部的对象的引用,所以内部类可以访问成员属性和成员函数。

1
2
3
4
5
6
7
8
9
10
11
12
class Outer {
private val bar: Int = 1
var v = "成员属性"
/**嵌套内部类**/
inner class Inner {
fun foo() = bar // 访问外部类成员
fun innerTest() {
var o = this@Outer //获取外部类的成员变量
println("内部类可以引用外部类的成员,例如:" + o.v)
}
}
}

inner类属于私有类,私有类不允许在主构造器中使用lateinit属性。

接口

接口的属性需要自己定义get,set方法,他不会帮你定义。
接口中的成员变量默认为open的,可以被重写和继承
在kotlin的接口中,他的方法是可以拥有方法体的。
但是接口中的属性只能是抽象的,不允许初始化值,实现接口时,必须重写属性。
或者如果初始化,必须完善他的get和set方法,因为他不会提供set和get方法。

类的修饰符

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