1. 程式人生 > >Scala_類和對象

Scala_類和對象

定義 args += col add 忽略 sets color rgs

類是對象的抽象,而對象是類的具體實例。類是抽象的,不占用內存,而對象是具體的,占用存儲空間。

 1 import scala.beans.BeanProperty
 2 
 3 class ChecksumAccumulator(xc: Int, yc: Int){
 4   // Scala 的類定義可以有參數,稱為類參數,如上面的 xc, yc,類參數在整個類中都可以訪問。
 5   
 6   // 必須初始化字段,生成面向JVM的類時候,會生成一個私有字段name和對應的公有getter、setter方法,getter,setter方法分別叫做name,name_
 7   private
var sum=0 8 9 // val修飾的只生成getter方法 10 val name = "" 11 12 // 將私有字段的getter和seeter改成公有方法 13 private var privateHeigth = 0.0 14 // 重新定義getter和setter 15 // 定義getter 16 def heigth = privateHeigth 17 // 自定義setter方法的時候一定要註意scala的語法限制,簽名、=、參數間不能有空格(這個非常重要) 18 def heigth_=(heigth : Double) {
19 privateHeigth = heigth 20 } 21 22 // Scala的getter和setter方法的命名與java是不同的,是field和field_=的方式 23 // 如果要讓scala自動生成java風格的getter和setter方法,只要給field添加@BeanProperty註解即可 24 // 此時會生成4個方法 25 // sex: String 26 // sex_=(newValue: String): Unit 27 // getSex(): String 28 // setSex(newValue: String): Unit
29 30 @BeanProperty var sex : String = _ 31 32 var x : Int = xc 33 var y : Int = yc 34 35 // 沒有返回值的函數,可以省略掉=,因此如果你希望函數返回某個值,但忘了方法定義中的“=”,Scala 會忽略方法的返回值,而返回 Unit。 36 def add(b:Byte) :Unit ={ 37 // 要註意的 Scala 的方法的 參數都是 val 類型,而不是 var 類型,因此在函數體內不可以修改參數b的值 38 // 結尾,也不需要使用 return返回值,函數的最後一行的值就作為函數的返回值 39 sum +=b 40 41 } 42 43 def move(dx: Int, dy: Int) { // move 方法沒有返回值 44 x = x + dx 45 y = y + dy 46 println ("x 的坐標點: " + x); 47 println ("y 的坐標點: " + y); 48 } 49 def checksum() : Int = ~ (sum & 0xFF) +1 50 } 51 52 object Test { 53 def main(args: Array[String]) { 54 val pt = new ChecksumAccumulator(10, 20); // 使用new創建類的對象 55 // 移到一個新的位置 56 pt.move(10, 10); 57 } 58 } 59 60 61

Scala_類和對象