一、面向对象的特征
面向对象的三大特征:
封装
、继承
、多态
由于面向对象的三大特征太过于普通,而且这并不是Kotlin
中特有的知识。在这里就不多做描述。
二、Kotlin继承类
在
Kotlin
中,继承这个特性除了定义关键字
,以及所有的父类和Java
语言不通之外,其他的其实无太大的差别。不过既然写到了这里,还是从始至终的写完这个特性,如果您有Java
的基础,您可以当复习一遍。
2.1、超类(Any
)
在
Kotlin
中,说有的类都是继承与Any
类,这是这个没有父类型的类。即当我们定义各类时,它默认是继承与Any
这个超类的
例:
class Demo // 这里定义了一个Demo类,即这个类默认是继承与超类的。
因为Any
这个类只是给我们提供了equals()
、hashCode()
、toString()
这三个方法。我们可以看看Any
这个类的源码实现:
package kotlin
/**
* The root of the Kotlin class hierarchy. Every Kotlin class has [Any] as a superclass.
* 看这个源码注释:意思是任何一个Kotlin的类都继承与这个[Any]类
*/
public open class Any {
// 比较: 在平时的使用中经常用到的equals()函数的源码就在这里额
public open operator fun equals(other: Any?): Boolean
// hashCode()方法:其作用是返回该对象的哈希值
public open fun hashCode(): Int
// toString()方法
public open fun toString(): String
}
从源码可以我们看出,它直接属于kotlin
这个包下。并且只定义了上面所示的三个方法。或许你具有Java
的编程经验。在我们熟知的Java
中,所有的类默认都是继承与Object
类型的。而Object
这个类除了比Any
多了几个方法与属性外,没有太大的区别。不过他们并不是同一个类。这里就不多种讲解了....
从上面源码中所产生的疑惑:类与函数前面都加上了open
这个修饰符。那么这个修饰符的作用是什么呢?
其实我们分析可以得出:既然Any
类是所有类的父类,那么我们自己要定义一个继承类,跟着Any
类的语法与结构就能定义一个继承类。故而,open
修饰符是我们定义继承类的修饰符
2.2、定义
2.2.1、继承类的基础使用
- 定义继承类的关键字为:
open
。不管是类、还是成员都需要使用open
关键字。
- 定义格式为: