Các mã sau đây tuyên bố rằng Jack được sử dụng trong xây dựng, nhưng Jane lại là một nạn nhân của nền kinh tế khó khăn:Scala: Kết hợp các lớp trường hợp
abstract class Person(name: String) {
case class Student(name: String, major: String) extends Person(name)
override def toString(): String = this match {
case Student(name, major) => name + " studies " + major
case Worker(name, occupation) => name + " does " + occupation
case _ => name + " is unemployed"
}
}
case class Worker(name: String, job: String) extends Person(name)
object Narrator extends Person("Jake") {
def main(args: Array[String]) {
var friend: Person = new Student("Jane", "biology")
println("My friend " + friend) //outputs "Jane is unemployed"
friend = new Worker("Jack", "construction")
println("My friend " + friend) //outputs "Jack does construction"
}
}
Tại sao trận đấu thất bại trong việc nhận ra Jane là một sinh viên?
Bạn có thể làm rõ ý của mình bằng "một cá thể Cá nhân cụ thể" không? – divider
Bất cứ ai cũng biết nếu hành vi này được ghi lại ở bất kỳ đâu? –
@divider: 'friend' là một' Narrator.Person', nhưng không phải là 'friend.Person'. –