Scala类的属性和对象私有字段实战详解

一、类的属性

  scala类的属性跟java有比较大的不同,需要注意的是对象的私有(private)字段

  1、私有字段:字段必须初始化(当然即使不是私有字段也要赋值)

  2、属性默认是public级别的,而且无法用public修饰。

  3、可以有很多类,并且默认是public级别(如果声明的时候加上会报错,不知为何)

  4、如果属性是public的,会默认生成类属性的getter和setter方法,无需显示的提供getter,setter方法

  5、私有字段(用private修饰),必须自己提供getter、setter方法

  

class Person{
//私有属性age的声明,注意:必须赋初值
private var age = 0
var name="dsfs"
//需提供get、set方法方法,不然无法访问
def set_age{age +=1}
def get_age = age
}
class Student{
var s_age = 12
}
object HelloOOP {
def main(args : Array[String]): Unit ={
val person = new Person()
person.set_age
println(person.get_age)
val student = new Student
//打印12---可以直接得到s_age的值,说明默认提供了getter方法
println(student.s_age)
student.s_age=15
//打印15----,说明默认提供了setter方法
println(student.s_age)
}
}

二、类的方法是可以访问这个类的所有对象的私有字段的(我自己都蒙了)

  

class Student{
private var privateAge = 1
val name = "Scala"
def age = privateAge
//在这个方法中,我们访问了Student这个对象的私有属性,这是合法的
//如果private[this] var privateAge =1 声明的话,就不能,因为这样写就限定了,只有这个类自己的方法能访问自己的对象的这个私有属性
//即使是别的对象是根据我这个类声明的(other,也就是说这个属性(privateAge)是属于当前对象私有的,而isYounger是不能访问其他对象的
//这个私有属性的,他只能访问当前对象的这个私有属性(privateAge),说白了就是other.privateAge这个对象访问不到,
// 这就是所谓的对象私有属性,我们限定一个属性归当前对象所有,
def isYounger(other : Student) = privateAge < other.privateAge
}

相关来源:

DT大数据梦工厂,微信公众号是:DT_Spark,每天都会有大数据实战视频发布,请您持续学习。
相关资料:
scala深入浅出实战经典完整视频、PPT、代码下载:
百度云盘:http://pan.baidu.com/s/1c0noOt6
腾讯微云:http://url.cn/TnGbdC
360云盘:http://yunpan.cn/cQ4c2UALDjSKy  访问密码45e2

最新文章

  1. Windows下 Maven 使用 阿里云镜像配置
  2. V-MODEL指令实现方法
  3. mysql解决Value ‘0000-00-00 00:00:00’ can not be represented as java.sql.Timestamp
  4. 转大写字母-(ASCII表)
  5. 图片大小的模式UIViewContentMode
  6. ACdream 1103 瑶瑶正式成为CEO(树链剖分+费用流)
  7. Android_进化史和平台架构介绍
  8. LocalStorage 本地存储
  9. [转]使用Beaglebone Black的SPI
  10. Android界面刷新方法
  11. mysql创建远程登陆用户并授权
  12. JSON.stringify()的不常见用法
  13. 面向对象text 01 盖伦vs瑞文vs提莫
  14. Unity 读写文本 文件
  15. centos rancher 通过本机 docker images 新增container
  16. bzoj4802 欧拉函数(附Millar-Rabin和Pollard-Rho讲解)
  17. ThinkPHP中如何获取指定日期后工作日的具体日期
  18. django 10.5 sqlite3迁移到mysql
  19. P3380 【模板】二逼平衡树(树套树)
  20. ubuntu16.04+cuda8.0+gpu

热门文章

  1. Java 几种调度任务的Timer、ScheduledExecutor、 开源工具包 Quartz、开源工具包 JCronTab
  2. Opera官网打不开 下载Opera最新版本的实际地址
  3. P2461 [SDOI2008]递归数列
  4. dp的一些计划
  5. BZOJ 1208 宠物收养所 | 平衡树模板题
  6. 【转】查看 Linux 发行版名称和版本号的 8 种方法
  7. java多线程 -- CountDownLatch 闭锁
  8. oracle的loop
  9. laravel 数据库迁移转 sql 语句
  10. NFS服务端+客户端配置