### Kotlin学习笔记要点详解 #### 一、构造函数与初始化块 Kotlin中定义类时,可以使用主构造函数和次构造函数。主构造函数直接位于类头之后,用于定义类的基本构造逻辑。 - **主构造函数**: - 定义在类头部。 - 不包含任何代码。 - 初始化代码可以放在`init`块中。 - **次构造函数**: - 在类定义中使用`constructor`关键字声明。 - 可以拥有自己的初始化逻辑。 - `init`块中的代码会先于次构造函数执行。 - **修饰符**: - 如果需要添加注解或可见性修饰符,则需显式使用`constructor`关键字。 - 注解和可见性修饰符位于`constructor`关键字之前。 #### 二、类的继承与开放性 - **默认final性**: - `class`默认为`final`,不允许被继承。 - 若要让类能够被继承,需要显式声明为`open class`。 - 同样地,`fun`默认也是`final`的,子类若要重写父类的方法,父类的方法必须声明为`open fun`。 - **重写规则**: - 子类重写父类方法或属性时,必须使用`override`关键字。 - 若希望某个重写的方法不再允许进一步重写,可以在子类中使用`final override fun`。 #### 三、内部类与超类访问 - **内部类**: - 内部类可以直接访问其外部类的成员。 - 当需要访问外部类的超类成员时,可以通过限定的`super`关键字进行访问。 - **示例代码**: ```kotlin class Bar : Foo() { override fun f() {/* ... */} override val x: Int get() = 0 inner class Baz { fun g() { super@Bar.f() // 调用Foo实现的f() println(super@Bar.x) // 使用Foo实现的x的getter } } } ``` - **通过限定的super关键字**: - `super@Outer`用于访问外部类的超类成员。 - 在内部类中,可以通过这种方式调用外部类的超类方法和属性。 #### 四、接口与实现 - **接口成员默认为open**: - 接口中声明的成员默认为`open`,意味着它们可以被重写。 - 即使没有显式声明方法体,接口方法也默认为抽象方法。 - **可见性修饰符**: - 默认可见性为`public`。 - 可以使用`private`、`protected`或`internal`来限制可见性。 #### 五、密封类与匿名对象 - **密封类**: - 通过`sealed`关键字声明。 - 密封类用于限制继承,只能由指定的子类继承。 - **匿名对象**: - 可以用来声明只在局部或私有作用域中使用的类型。 - `object`关键字用于声明单例对象或伴生对象。 - **伴生对象**: - 通过`companion object`声明,用于为类提供辅助功能。 - 伴生对象可以通过`by`关键字与类的成员进行委托。 #### 六、可变参数与局部函数 - **可变参数**: - `vararg`用于声明可接受任意数量参数的函数。 - 调用时,可以传递任意个参数。 - **局部函数**: - 在其他函数内部定义的函数称为局部函数。 - 局部函数只能在其定义的上下文中访问。 通过以上总结,我们可以看到Kotlin提供了丰富的特性来简化面向对象编程。无论是构造函数的灵活使用,还是类的继承机制,以及接口的设计模式,Kotlin都提供了一种简洁而强大的方式来构建复杂的应用程序结构。
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助