0Pricing
Scala for Backend Engineering & Functional Programming · 课时

类、对象与打包

了解如何在 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 类、对象与打包
  2. 继承与多态
← 返回 Scala for Backend Engineering & Functional Programming