case class和case object的区别

Microsoft Windows [版本 10.0.17763.1282]
(c) 2018 Microsoft Corporation。保留所有权利。

c:\desktop>scala
Welcome to Scala 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_112).
Type in expressions for evaluation. Or try :help.

/**
  * case class和case object的区别
  * case class:  有参
  * case object: 无参
  */
scala> :paste
// Entering paste mode (ctrl-D to finish)

abstract class Person
case class Student(age: Int) extends Person
case class Teacher(age: Int, salary: Double) extends Person
case object Officer extends Person

def getAction(p: Person){
    println(p.toString)
}

// Exiting paste mode, now interpreting.

defined class Person
defined class Student
defined class Teacher
defined object Officer
getAction: (p: Person)Unit

scala> val s = new Student(18)
s: Student = Student(18)

scala> getAction(s)
Student(18)

scala> val t = new Teacher(20, 1000)
t: Teacher = Teacher(20,1000.0)

scala> getAction(t)
Teacher(20,1000.0)

scala> val o = Officer
o: Officer.type = Officer

scala> getAction(o)
Officer

  

posted @ 2020-08-14 22:50  初入门径  阅读(572)  评论(0)    收藏  举报