Scala:Object與Class的區別


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
  }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。