Scala_类和对象
Posted 9981-lyq
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala_类和对象相关的知识,希望对你有一定的参考价值。
类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。
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_类和对象的主要内容,如果未能解决你的问题,请参考以下文章