在Scala中,類和對象可以共享同一個名稱。
當一個對象與一個類共享一個名稱時,它被稱為伴生對象,并且該類被稱為伴生類。
伴生對象是與另一個類或特征共享相同名稱和源文件的對象。
一個trait可以看作是一個Java接口。
這種方法允許我們在類上創(chuàng)建靜態(tài)成員。
伴生對象對實現(xiàn)輔助方法和工廠很有用。
要實現(xiàn)一個創(chuàng)建不同類型的形狀的工廠,我們可以在Scala中創(chuàng)建一個形狀工廠。
我們使用一個伴生類Shape和一個伴生對象Shape,作為一個工廠。
trait Shape { def area :Double } object Shape { private class Circle(radius: Double) extends Shape{ override val area = 3.14*radius*radius } private class Rectangle (height: Double, length: Double)extends Shape{ override val area = height * length } def apply(height :Double , length :Double ) : Shape = new Rectangle(height,length) def apply(radius :Double) : Shape = new Circle(radius) } object Main extends App { val circle = Shape(2) println(circle.area) val rectangle = Shape(2,3) println(rectangle.area) }
與伴生類不共享相同名稱的單例對象稱為獨立對象。
更多建議: