类、对象与打包
了解如何在 Scala 中定义类、创建对象,以及使用包组织代码。
类、对象与打包 是 CoddyKit 上的免费 Scala for Backend Engineering & Functional Programming 课时。 这是第 1 节课,共 2 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Scala for Backend Engineering & Functional Programming 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Scala for Backend Engineering & Functional Programming 课程共包含 2 节课。
欢迎学习 Scala 中的 OOP
在本课中,您将深入了解 Scala 中面向对象编程(OOP)的核心内容。我们将学习如何使用类组织代码、创建这些类的实例(对象),并使用包让所有内容保持井然有序。
让我们开始构建稳健且模块化的应用程序吧!
类:程序的蓝图
请把类想象成创建对象的蓝图。它定义了对象所具有的属性(数据)和行为(方法)。类本身不保存数据,但会描述对象可以保存哪些数据。
下面是一个基本的类定义:
class Car {
// Properties and methods go here
}定义一个简单的类
在 Scala 中,您可以使用 class 关键字,后面跟上类名来定义类。让我们创建一个简单的 Dog 类。它目前还不能做什么,但这是一个开始!
请尝试运行这个空的类定义:
class Dog {
// This dog has no properties or behaviors yet
}
object Main {
def main(args: Array[String]): Unit = {
println("Dog class defined!")
}
}创建对象(实例)
对象是类的一个实例。它是根据蓝图创建出的真实“事物”。要创建对象,请使用 new 关键字,后面跟上类名。
每个对象都会获得一组由类定义的数据。
class Dog {
// Still an empty dog blueprint
}
object Main {
def main(args: Array[String]): Unit = {
val myDog = new Dog()
val yourDog = new Dog()
println("Two dog objects created!")
}
}向类中添加属性
类可以包含用于存储数据的属性(也称为字段或成员)。您可以在类的构造函数中定义这些属性,在创建对象时将它们作为参数传入。
让我们的 Dog 拥有 name 和 breed:
class Dog(val name: String, val breed: String) {
// 'val' makes name and breed immutable properties
}
object Main {
def main(args: Array[String]): Unit = {
val myDog = new Dog("Buddy", "Golden Retriever")
println(s"My dog's name is ${myDog.name} and breed is ${myDog.breed}.")
}
}添加行为(方法)
类还可以定义方法,也就是描述对象行为的函数。方法可以访问和修改对象的属性。
现在我们的 Dog 可以 bark() 了:
class Dog(val name: String, val breed: String) {
def bark(): String = {
s"${name} says Woof!"
}
}
object Main {
def main(args: Array[String]): Unit = {
val myDog = new Dog("Max", "Labrador")
println(myDog.bark())
}
}Scala 的 `object`(单例)
在 Scala 中,object 关键字用于定义单例。这意味着它最多只能有一个实例存在。您不需要使用 new 来创建它,只需引用它的名称即可。
它们通常用于定义工具方法或作为唯一的入口点。
object MathUtils {
def add(a: Int, b: Int): Int = a + b
def subtract(a: Int, b: Int): Int = a - b
}
object Main {
def main(args: Array[String]): Unit = {
val sum = MathUtils.add(5, 3)
println(s"5 + 3 = ${sum}")
}
}伴生对象
伴生对象是一个与 class 同名,并且定义在同一个源文件中的 object。它们可以特殊地访问彼此的私有成员。
- 类保存实例特有的数据和方法。
- 伴生对象保存类似静态的方法或工厂方法。
class Circle(val radius: Double) {
def area: Double = Circle.PI * radius * radius
}
object Circle {
// This is the companion object for the Circle class
val PI: Double = 3.14159
def apply(r: Double): Circle = new Circle(r) // Factory method
}
object Main {
def main(args: Array[String]): Unit = {
val c = Circle(5.0) // Using the apply method from companion object
println(s"Circle area: ${c.area}")
}
}使用包组织代码
包可以将类和对象组织成有逻辑的组,从而避免名称冲突并提高代码的可维护性。
您可以把包想象成存放代码的文件夹。package 关键字用于在 Scala 文件顶部声明包。
package com.coddykit.animals
class Cat(val name: String) {
def meow(): String = s"${name} says Meow!"
}
// This class is now inside com.coddykit.animals package从包中导入成员
要使用另一个包中定义的类或对象,您需要导入它们。import 关键字会让包中的成员在当前作用域内可用。
让我们导入 Cat 类:
package com.coddykit.app
// Define a class in a package first for import example
package com.coddykit.animals {
class Cat(val name: String) {
def meow(): String = s"${name} says Meow!"
}
}
import com.coddykit.animals.Cat
object Main {
def main(args: Array[String]): Unit = {
val myCat = new Cat("Whiskers")
println(myCat.meow())
}
}快速检查:类还是对象?
您已经了解了类、对象和包。让我们测试一下您的理解!
回顾:类、对象和包
做得太棒了!您已经掌握了 Scala 面向对象编程的基础知识:
- 类是定义属性和行为的蓝图。
- 对象是使用
new从类创建出的实例。 - Scala 的
object关键字用于创建单例,适合用于工具或工厂。 - 伴生对象与类配对,用于定义类似静态的成员。
- 包可以组织代码,避免名称冲突并改善代码结构。
接下来,我们将在此基础上学习继承和多态!
常见问题解答
「类、对象与打包」课时是免费的吗?
是的 — 「类、对象与打包」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Scala for Backend Engineering & Functional Programming 课程的其余内容,请升级到 CoddyKit PRO。 Scala for Backend Engineering & Functional Programming 课程共包含 2 节课。
「类、对象与打包」这节课中我会学到什么?
了解如何在 Scala 中定义类、创建对象,以及使用包组织代码。 你通过在浏览器中直接运行的动手代码来练习 Scala for Backend Engineering & Functional Programming,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Scala for Backend Engineering & Functional Programming 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Scala for Backend Engineering & Functional Programming 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 2 节。
「类、对象与打包」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Scala for Backend Engineering & Functional Programming 课中编写并运行代码吗?
能。每节 Scala for Backend Engineering & Functional Programming 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 类、对象与打包
- 继承与多态