码迷,mamicode.com
首页 > 其他好文 > 详细

Scala_类和对象

时间:2019-03-09 23:52:19      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:参数   print   bean   空格   property   move   scala   value   private   

类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。

 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_类和对象

标签:参数   print   bean   空格   property   move   scala   value   private   

原文地址:https://www.cnblogs.com/9981-lyq/p/10434630.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!