scala class和object,trait的區別


Scala類

class Counter {
  private var value = 0 // 必須初始化字段
  def increment() { value += 1 } // 方法默認公有
  def current = value // 調用必須是myCounter.current這種風格
}
class Student{  
  var age=20     //底層編譯器會自動為私有的age添加get和set的公有方法,可以理解為偽public類型  
  private[this] var gender="male" //private[this] 只有該類的this可以使用  
  private var name="clow" //聲明了private,底層編譯器會自動為私有的name添加get和set的私有方法  
  //但是可以自己定義屬性方法  
  def getName=this.name  
  def setName(value:String){this.name=value}  
}

  

Scala類和java類中有些區別,在Scala聲明private變量會Scala編譯器會自動生成get,set,在Scala中變量是需要初始化的,如果不聲明private默認是public的

object

Scala中沒有靜態修飾符,static,在object下的成員全部都是靜態的,如果在類中聲明了與該類相同的名字的object則該object是該類的“半生對象”,可以理解把類中的static集中放到了object對象中,伴生對象和類文件必須是同一個源文件,可以用伴生對象做一些初始化的操作。

trait

在java中可以通過interface實現多重繼承,在Scala中可以通過特征(trait)實現多重繼承,不過與java不同的是,它可以定義自己的屬性和實現方法體,在沒有自己的實現方法體時可以認為它時java interface是等價的,在Scala中也是一般只能繼承一個父類,可以通過多個with進行多重繼承。


免責聲明!

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



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM