Kotlin 中的对象与类
面向对象编程中通常使用类和对象特性,记为OOP。
面向对象编程是一种编程方法,其中继承、多态、抽象和封装是面向对象编程的四个基本原则。
支持面向对象编程的语言示例包括 Kotlin、Java、Python、JavaScript、TypeScript 等。
类的主要优点是它们帮助我们模拟真实的事物和对象,并帮助我们创建尽可能多的不同情况,这些情况具有不同的行为和不同的状态。
例如,您可能想要创建一个应用程序来帮助您设计汽车; 我们知道有不同类型的汽车,它们有不同的状态,例如颜色、座位数等。
为实现这一点,我们使用一个类来创建一个汽车原型,然后根据这个原型,我们可以创建具有不同状态的汽车。 在本篇文章中,我们将学习如何在 Kotlin 中使用类和对象。
在 Kotlin 中创建单例对象
在 Kotlin 中创建对象的方式多种多样,可以以不同的形式存在。 在这个例子中,我们将学习如何创建一个静态对象。
打开 IntelliJ 开发环境并选择 File > New > Project。 在打开的窗口中,输入项目名称 kotlin-objects-and-classes,在 Language 部分选择 Kotlin,在 Build system 部分选择 IntelliJ。
在kotlin文件夹下新建一个Main.kt文件,将以下代码复制粘贴到文件中。
object DBConnection{
private const val url = "http://localhost";
private const val port = 8080;
private const val DBName = "customerDB";
override fun toString(): String {
return "Connected to database $DBName using port $port at $url";
}
}
fun main(){
println(DBConnection.toString());
}
在这个例子中,我们创建了一个类的静态实例,尽管我们没有定义任何类,但是如果我们将这段代码反编译为Java,我们会发现在后台创建了一个类并返回了一个单例。
当我们将此对象定义为静态类实例时,我们指的是单例,这意味着在应用程序的生命周期中只会创建该对象的一个副本。
请注意,您可以在不对其进行任何调用的情况下调用该对象的成员函数和变量,如 main()
函数所示。
我们只需要附加 . 对象名称上的符号来调用和进行任何调用,就像我们对 toString()
方法所做的那样。 运行上面的示例,并注意它按预期工作。
Connected to database customerDB using port 8080 at http://localhost
在 Kotlin 中使用类创建对象
我们已经提到类可以帮助我们模拟现实世界的事物及其行为,从而为这些事物创建蓝图。
实例是从蓝图创建的不同对象,下面的例子展示了如何创建类和类的实例。
注释掉前面的示例,然后将以下代码复制并粘贴到 Main.kt 文件中。
class Employee(private val firstName: String,
private val lastName: String,
private val salary: Number){
override fun toString(): String {
return "$firstName $lastName earns a salary of $$salary"
}
}
fun main(){
val john = Employee("john","doe",60000);
println(john.toString());
}
在此示例中,我们使用 class 关键字创建了员工的蓝图,这是创建类时始终使用的语法。
该类具有三个属性:firstName、lastName 和 salary,以及一个返回员工详细信息的方法 toString()。
在 main 方法中,我们通过调用类名 Employee()
创建了一个员工对象,也称为构造函数,并传递了客户的具体属性。
我们可以通过再次调用构造函数并传递不同的属性来创建不同的对象来创建任意数量的实例。 运行此示例以验证它是否按预期工作。
john doe earns a salary of $60000
在 Kotlin 中创建 Companion 对象 在第一个例子中,我们看到了如何创建一个在其整个生命周期中只有一个副本且不属于任何类的静态对象。
在类中的静态中,我们可以使用伴随对象创建属于类的静态属性和函数。 下面的例子展示了如何实现这一点。
注释掉前面的示例,然后将以下代码复制并粘贴到 Main.kt 文件中。
class Customer(private val name: String,
private val email: String,
private val orderItem: String){
companion object{
const val creditCard = 1
}
override fun toString(): String {
return "$name bought a $orderItem using the email $email";
}
fun getName(): String{
return this.name;
}
}
fun main(){
val customer = Customer("mary", "mary@gmail.com", "watch")
println(customer.getName()+" has "+ Customer.creditCard+ " credit card")
println(customer.toString())
}
注意,静态属性和函数是在伴生对象中定义的,而伴生对象是在类中定义的。
当您想要访问静态属性和函数时,我们使用与第一个示例中相同的方法。
例如,Customer.creditCard 用于访问类的静态属性 creditCard。 运行此示例以验证它是否按预期工作。
mary has 1 credit card
mary bought a watch using the email mary@gmail.com
在 Kotlin 中创建数据类
注释掉前面的示例,然后将以下代码复制并粘贴到 Main.kt 文件中。
import java.math.BigDecimal
data class Product(val productName: String,
val productPrice: BigDecimal);
fun main(){
val product = Product("watch", BigDecimal("457.65"))
println(product.toString());
}
数据类用于保存数据并使用数据关键字创建,数据关键字添加在类关键字之前。
创建数据类有一些条件,包括确保主构造函数至少有一个参数,确保使用 val 或 var 声明参数,并且数据类不能是开放的、密封的、抽象的或内部的。
数据类可帮助开发人员避免代码中的样板代码,因为它会生成与 toString()、equal()、hashCode() 等类一起使用的常用函数。
在此示例中,我们为产品创建了一个数据类,当我们调用 toString() 方法时,客户的详细信息将免费返回给我们。 运行此示例以确保它按预期工作。
Product(productName=watch, productPrice=457.65)
总结
本篇文章教我们如何在 Kotlin 中和类中创建不同类型的对象。 涵盖的主题包括创建单例对象、使用类创建对象、创建伴随对象以及创建数据类。
相关文章
在 Kotlin 中继承具有多个构造函数的类
发布时间:2023/05/12 浏览次数:200 分类:Java
-
本文讨论如何扩展具有多个构造函数的类。 构造函数是在创建对象时调用的函数,用于初始化类变量。在 Kotlin 中扩展具有多个构造函数的类
Kotlin中栈数据结构的使用
发布时间:2023/05/12 浏览次数:130 分类:Java
-
本篇文章我们就来学习一下Kotlin中栈的使用。 我们还将看到用于更新和更改 Kotlin 堆栈的标准函数,包括 push、pop、peek、search 和 isEmpty。我们还将研究比 Kotlin 中的堆栈更好的替代方案。
Kotlin中findViewById函数的使用
发布时间:2023/05/12 浏览次数:183 分类:Java
-
Kotlin 中的 findViewById 允许在 ID 的帮助下查看和更新视图。 本文介绍了 Kotlin 中 findViewById 函数的使用。
Kotlin runBlocking:用协程代码桥接非协程世界
发布时间:2023/05/12 浏览次数:194 分类:Java
-
Kotlin runBlocking 函数允许阻塞整个线程。 我们将在本文中看到更多关于 Kotlin Coroutine runBlocking 的信息。
Kotlin Init 和构造函数之间的区别
发布时间:2023/05/12 浏览次数:67 分类:Java
-
构造函数和 Kotlin init 块是这种编程语言的重要组成部分。 本文概述了 init 和构造函数之间的区别。
在 Kotlin 中获取 SimpleName
发布时间:2023/05/12 浏览次数:154 分类:Java
-
本文介绍了在 Kotlin 中获取类的 SimpleName 的简单方法。 它显示了与 Java 的 getSimpleName() 方法等效的方法。
在 Kotlin 中将字符串拆分为数组
发布时间:2023/05/12 浏览次数:111 分类:Java
-
本教程将展示如何在 Kotlin 中将字符串拆分为字符串数组。 如上所述,您可以使用此技术通过从字符串数组中检索关键字来在应用程序中进行搜索。