Kotlin 简明教程
Kotlin - Class and Objects
Kotlin同时支持函数式和面向对象编程。在讨论Kotlin的函数式特性时,我们有诸如函数、高阶函数和lambda之类的概念,它们将Kotlin表示为一种函数式语言。
Kotlin 也支持面向对象编程 (OOP) 并提供诸如抽象、封装、继承等功能。本教程将通过简单的步骤教你所有 Kotlin OOP 功能。
Kotlin Classes
类是对对象的蓝图,它定义一个模板,用于创建所需的类。
类是任何面向对象编程语言的主要构建块。使用 class 关键字定义 Kotlin 类。以下是创建 Kotlin 类的语法:
class ClassName { // Class Header
//
// Variables or data members
// Member functions or Methods
//
...
...
}
默认情况下,Kotlin 类为 public ,我们可以使用将在 Visibility Modifiers 中学习的不同修饰符控制类成员的可见性。
Kotlin Objects
对象是从 Kotlin 类创建的,它们共享由类的形式定义的公共属性和行为数据成员(属性)和成员函数(行为)。
声明类对象的语法为:
var varName = ClassName()
我们可以使用 . (点)运算符访问类的属性和方法,如下所示:
var varName = ClassName()
varName.property = <Value>
varName.functionName()
Example
下面是一个示例,我们将创建一个 Kotlin 类及其对象,通过该对象我们将访问该类不同的数据成员。
class myClass {
// Property (data member)
private var name: String = "Tutorialspoint.com"
// Member function
fun printMe() {
print("The best Learning website - " + name)
}
}
fun main(args: Array<String>) {
val obj = myClass() // Create object obj of myClass class
obj.printMe() // Call a member function using object
}
上面的代码段将在浏览器中生成以下输出,其中我们将使用自己对象 obj 调用 myClass 的 printMe() 方法。
The best Learning website - Tutorialspoint.com
Kotlin Nested Class
根据定义,如果在一个类中创建了另一个类,则称为 nested class 。
Kotlin 嵌套类默认是静态的,因此无需创建该类的任何对象就可以通过 . 点运算符访问它。同时,我们无法在嵌套类中访问外部类成员。
以下是创建嵌套类的简单语法:
class OuterClass{
// Members of Outer Class
class NestedClass{
// Members of Nested Class
}
}
现在我们可以如下创建嵌套类的对象:
val object = OuterClass.NestedClass()
Kotlin Inner Class
当使用关键词 inner 标记嵌套类时,它将被称为 Inner class 。内部类可以通过外部类的数据成员访问。
与嵌套类不同,内部类可以访问外部类成员。我们无法直接创建内部类对象,但可以使用外部类对象创建它。
以下是创建内部类的简单语法:
class OuterClass{
// Members of Outer Class
class inner InnerClass{
// Members of Inner Class
}
}
现在我们可以如下创建内部类的对象:
val outerObj = OuterClass()
val innerObj = outerObj.InnerClass()
Example
以下是展示 Kotlin 如何解释内部类的示例。
fun main(args: Array<String>) {
val obj = Outer().Inner()
print(obj.foo())
}
class Outer {
private val welcomeMessage: String = "Welcome to the TutorialsPoint.com"
inner class Inner {
fun foo() = welcomeMessage
}
}
当你运行上述 Kotlin 程序时,它将生成以下输出:
Welcome to The TutorialsPoint.com
Anonymous Inner Class
匿名内部类是一个非常好的概念,可以让程序员的生活变得非常轻松。每当我们实现一个接口时,匿名内部块的概念就会出现在图片中。使用运行时对象引用创建接口对象的概念称为匿名类。
Example
以下是一个示例,展示了我们将如何创建接口,以及如何使用匿名内部类机制创建该接口的对象。
fun main(args: Array<String>) {
var programmer :Human = object:Human { // Anonymous class
override fun think() { // overriding the think method
print("I am an example of Anonymous Inner Class ")
}
}
programmer.think()
}
interface Human {
fun think()
}
当你运行上述 Kotlin 程序时,它将生成以下输出:
I am an example of Anonymous Inner Class
Kotlin Type Aliases
Kotlin 类型别名是指为现有类型提供替代名称的一种方式。类型别名提供了一个更干净的方式来编写更可读的代码。
考虑以下一个返回用户信息、姓氏和年龄的函数:
fun userInfo():Triple<String, String, Int>{
return Triple("Zara","Ali",21)
}
现在,我们可以按照 Triple 给定的类型别名如下:
typealias User = Triple<String, String, Int>
最后,上面的函数可以写成如下所示,它看起来比上面的代码更简洁:
fun userInfo():User{
return Triple("Zara","Ali",21)
}