1.在Scala中聲明private變量,Scala編譯器會自動生成get,set方法
2.在Scala中變量需要初始化
3.在Scala中沒有靜態修飾符,在object下的成員全部都是靜態的,如果在類中聲明了與該類相同名字的object則該object是該類的”伴生對象”,所以對於一個class來說,所有的方法和成員變量在實例被 new 出來之前都是無法訪問的
可以理解為Scala把類中的static集中放到了object對象中,伴生對象和類文件必須是同一個源文件,可以用伴生對象做一些初始化操作.
4.在Java中可以通過interface實現多繼承,在Scala中可以通過特征(trait)實現多重繼承,但是與Java不同的是,它可以定義自己的屬性和實現方法體
5.object不能提供構造器參數,也就是說object必須是無參的
Scala中object與class的區別
在Scala中,類名可以和對象名為同一個名字,該對象稱為該類的伴生對象,類和伴生對象可以相互訪問他們的私有屬性,但是它們必須在同一個源文件中
class
scala中class:編譯器會自動幫我們生產一個私有字段和2個公有方法get和set
類只會被編譯,不能直接執行,類的聲明和主構造器在一起被聲明,在一個類中,主構造器只有一個.
類和它的伴生對象可以相互訪問其私有成員,class中的main方法沒什么用了
object
scala中object:所有成員變量和方法默認都是 static 的,所以可以直接訪問main方法
class和object的一個差別是,單例對象不帶參數,而類可以.因為你不能用new關鍵字實例化一個單例對象,你沒有機會傳遞給它參數
class Lis { var age=19 } object Test{ def main(args: Array[String]): Unit = { var s=new Lis s.age=10 //set println(s.age) //get } }