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

Dream------scala--类的属性和对象私有字段实战详解的更多相关文章

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

    007-Scala类的属性和对象私有字段实战详解 Scala类的使用实战 变量里的类必须赋初值 def函数时如果没参数可不带括号 2.不需要加Public声明 getter与setter实战 gett ...

  2. Python笔记(七):字典、类、属性、对象实例、继承

    (一)  简单说明 字典是Python的内置数据结构,将数据与键关联(例如:姓名:张三,姓名是键,张三就是数据).例如:下面这个就是一个字典 {'姓名': '张三', '出生日期': '2899-08 ...

  3. Scala 深入浅出实战经典 第64讲:Scala中隐式对象代码实战详解

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  4. Scala 深入浅出实战经典 第63讲:Scala中隐式类代码实战详解

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...

  5. Scala进阶之路-面向对象编程之类的成员详解

    Scala进阶之路-面向对象编程之类的成员详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Scala中的object对象及apply方法 1>.scala 单例对象 ...

  6. 010-Scala单例对象、伴生对象实战详解

    010-Scala单例对象.伴生对象实战详解 Scala单例对象详解 函数的最后一行是返回值 子项目 Scala伴生对象代码实战 object对象的私有成员可以直接被class伴生类访问,但是不可以被 ...

  7. 008-Scala主构造器、私有构造器、构造器重载实战详解

    008-Scala主构造器.私有构造器.构造器重载实战详解 Scala主构造器实战 无参数的主构造器 分析 1.name 需要赋初值,一般通过占位符来代表空值 2.private 声明私有的age 生 ...

  8. Scala进阶之路-反射(reflect)技术详解

    Scala进阶之路-反射(reflect)技术详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Scala中的反射技术和Java反射用法类似,我这里就不一一介绍反射是啥了,如果对 ...

  9. Scala 深入浅出实战经典 第78讲:Type与Class实战详解

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...

随机推荐

  1. 计算机网络【3】—— IP地址分类与子网划分

    一.IP地址分类

  2. 《编写高质量代码改善JavaScript程序的188个建议》读书笔记

    逗号运算符比较怪异.如    var a =(1,2,3,4);alert(a);// 4      var a = 1,2,3,4;//报错 注意a++和++a的差别,变量在参与运算中不断地变化.v ...

  3. 卸载Visual Studio最佳方法难道真的是重装系统?

    卸载Visual Studio最佳方法难道真的是重装系统? 卸载Visual Studio最佳方法难道真的是重装系统? 使用TotalUninstaller貌似也没有效果,默认卸载的,程序列表里面还是 ...

  4. todomvc-app

    1.HTML <!doctype html> <html lang="en"> <head> <meta charset="ut ...

  5. java 表单验证

    java 表单验证 1.思路:通过表单选择器,表单属性过滤器提取每个表单提交的值,进行验证 2.实现:javascript通过 onSubmit()事件,判断,返回值false不提交,返回true提交 ...

  6. Day22-Django之Form组件验证

    1. Django里面的Form专门用来做验证. 用Form创建一个类,把用户发来的数据放到request.POST里面发给这个类,这个类会帮忙做验证. 返回3个结果:是否验证成功了,所有的正确信息, ...

  7. BZOJ5305 [Haoi2018]苹果树 【组合数学】

    题目链接 BZOJ5305 题解 妙啊 要求的是所有可能的树形的所有点对距离和 直接考虑点的贡献肯定想不出,这样的所有点对距离问题通常转化为边的贡献 考虑一条边会产生多少贡献 我们枚举\(i\)节点的 ...

  8. HDU 1711 Number Sequence (字符串匹配,KMP算法)

    HDU 1711 Number Sequence (字符串匹配,KMP算法) Description Given two sequences of numbers : a1, a2, ...... , ...

  9. 【DP】【CF1097D】 Makoto and a Blackboard

    更好的阅读体验 Description 给定一个数 \(n\),对它进行 \(k\) 次操作,每次将当前的数改为自己的因数,包括 \(1\) 和自己.写出变成所有因数的概率是相等的.求 \(k\) 次 ...

  10. Python【经典类与新式类】

    经典类多继承的调用方法顺序是:深度优先查询,如下图:   新式类多继承的调用方法顺序是:广度优先查询,如下图:   可以使用下面的代码进行实验验证: #经典类class A: def __init__ ...