在Scala中,类用于定义对象的结构和行为。每个类可以有属性(字段)和方法(功能)。对象是类的具体实例,包含实际的数据。
```scala class Person(val name: String, var age: Int) { def greet(): String = { s"Hello, my name is $name and I am $age years old." } }
object Main { def main(args: Array[String]): Unit = { val person = new Person("Alice", 30) println(person.greet()) } } ```
在上面的例子中,我们定义了一个名为Person的类,其中包含一个不可变的属性name和一个可变的属性age。该类还包含一个方法greet,用于输出问候信息。在Main对象的main方法中,我们创建了一个Person类的实例,并调用了它的greet方法。
1.2 继续与多态
Scala支持类的继续,允许我们基于已有的类创建新的类。子类可以继续父类的属性和方法,也可以重写父类的方法。别的,Scala支持多态,通过父类引用指向子类对象,可以在运行时选择调用哪个版本的方法。
```scala class Animal(val name: String) { def speak(): String = "Some sound" }
class Dog(override val name: String) extends Animal(name) { override def speak(): String = "Woof!" }
class Cat(override val name: String) extends Animal(name) { override def speak(): String = "Meow!" }
object Main { def main(args: Array[String]): Unit = { val animals: List[Animal] = List(new Dog("Buddy"), new Cat("Kitty")) animals.foreach(animal => println(s"${animal.name} says: ${animal.speak()}")) } } ```
在这个示例中,我们定义了一个基类Animal,以及两个子类Dog和Cat。每个子类都重写了speak方法。当我们在Main对象中创建一个Animal范例的列表并遍历时,会根据实际的对象范例调用相应的方法,这就是多态的体现。
二、特质(Traits)