小记--------scala 面向对象编程 之 类
定义类
创建类对象, 并调用其方法
Getter与setter 使用
定义不带private的var field,此时scala生成的面向JVM的类时, 会定义为private的name,并提供public的Getter和setter方法、(也就是说,在scala中不论你定义不定义private var,scala都会自动帮你定义为private, 并为你提供公共的访问方式)
定义不带private的val field ,则只会生成Getter方法(因为val是常量, 在定义好值后,值就不能改变,故scala不会提供setter方法)
而如果在定义 var filed、val filed 的时候使用private修饰,则scala会自动生成的Getter和setter也均为private的 *****注意注意
如果不希望scala自动帮生成Getter和setter方法,则需要将field声明为private[this]
调用Getter和setter的方法, 分别为 .field 和 .field_
private[this]的使用 (对象私有, 隔离级别最高)
如果将field使用private来修饰, 那么代表这个field是类私有的, 在类的方法中个,可以直接访问类的其他对象的private field。
如果不希望field被其他对象访问到,那么可以使用private[this],意味着对象私有的field,只有本对象内可以访问到。
scala 生成java风格的Getter和setter方法
只需要给field添加@BeanProperty注解即可。
此时会生成4个方法,name:String / name_=(newValue : String):Unit / getName():String / setName(newValue : String):Unit
需要先导入包 import scala.reflect.BeanProperty
constructor构造函数
辅助constructor,
主constructor 是与类名放在一起的
主constructor 还可以通过默认参数,来给参数默认的值
内部类
scala中, 同样可以在类中定义内部类, 但是与java不同的是, 每个外部类的对象的内部类,都是不同的类。
作者:于二黑
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。