Scala_類和對象

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

 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   
相關文章
相關標籤/搜索