大数据系列修炼-Scala课程06
来源:互联网 发布:如何创建java项目 编辑:程序博客网 时间:2024/05/17 01:10
核心内容:
1、Scala类的使用实战
2、getter与setter实战
3、对象私有属性
1、Scala类的使用实战
(1)Scala中的类默认是public级别的,如果用户添加public修饰符,将会报错
(2)Scala中的属性默认是private级别的,Scala中的方法默认是public级别的.
(3)类中的属性必须被赋值,否则会报错
示例程序:
class Student //类默认是public级别的{ val name = "zhangsan" //属性默认是private级别的 var score = 60.0 def fun() //方法默认是public级别的 { println(name+"\t"+score) }}
上面的Scala程序等同于下面的Java程序,很明显Java程序显得稍微复杂一点:
class Student{ private String name = "zhang"; public double score = 60.0; public void fun() { System.out.println(name+"\t"+score); } }
2、getter与setter实战(1)类中的var属性自动带有getter方法和setter方法
(2)getter方法和setter方法默认是共有的,但是如果属性加上了private修饰符(尽管字段本身已经是private了),则getter方法和setter方法将会变成私有的
(3)用户可以自行定义类setter方法和getter方法的函数
(4)被val修饰的属性,在底层是final类型的private字段,只有getter方法,没有setter方法(符合我们在Java中学的:被final修饰的属性,一旦被赋值,数值将不能被修改,同时也符合Scala中的val永不改变的规定)
示例程序1:用户没有对属性加上private修饰符,此时getter方法与setter方法默认是共有的
object App6 { def main(args:Array[String]):Unit= { val aa = new Student() aa.score = 80.0 //实际上调用的是setter方法设置的score数值 println(aa.score) //实际上调用的是getter方法获取的score数值 }}class Student { var score = 60.0 //类中的属性默认是private级别的,私有成员在类的外部是不能被访问的}
示例程序2:用户对属性加上了private修饰符,此时getter方法与setter变成私有的了,为了能够访问私有属性,我们需要自行定义类似setter方法和getter方法的函数
object App6 { def main(args:Array[String]):Unit= { val aa = new Student() /***aa.score = 80.0 println(aa.score)***不能在这么写了***/ aa.setter(88.0) println(aa.getter()) }}class Student { private var score = 60.0 //此时默认的getter方法与setter变成私有的了,在类的外部将不能被使用 //自定义类似setter与getter的函数(名字可以任意取值) def setter(score:Double)= { this.score = score } def getter()=score}
示例程序3:被val修饰的属性,只有getter方法,没有setter方法
object App6 { def main(args:Array[String]):Unit= { val aa = new Student() println(aa.name) //实际调用的是aa对象的getter方法 //aa.name = "lisi" -->如果这样写将会报错,因为被final修饰的属性数值不能发生改变 }}class Student { val name = "zhang"}
3、对象私有属性实战(1)在scala中,在一个类的内部,所有的成员彼此之间都可以进行相互访问,共有的可以访问私有的,私有的可以访问共有的,因为大家是一家人嘛
(2)在一个类的外部,通过类对象名.私有成员名的方式是不能访问类的私有成员的,但是在一个类的内部,通过类对象名.私有成员名的方式是可以访问类的私有成员的(这句话等同于在一个类的内部,方法是可以访问这个类所构造的对象的私有成员的)
(3)通过使用private[this]修饰符,将会导致在一个类的内部,通过类对象名.私有成员名的方式是不可以访问类的私有成员的,这是一种更加严格的访问限制(这句话等同于通过使用private[this]修饰符,将会导致在一个类的内部,方法是不可以访问这个类所构造的对象的私有成员的)—->这种情况叫做对象私有属性
(4)在Spark中,在属性配置或驱动生成的时候常用对象私有属性机制,通过使用private[this]这种机制,可以很好的进行实例成员的隔离.
(5)private[this]只可以被当前类的对象本身使用,不可以被当前类的方法使用。
示例程序1:在一个类的内部,方法是可以访问这个类所构造的对象的私有成员的(不加private[this])
class Student { val name = "zhang" def fun(aa:Student) { println(aa.name) //私有属性在类的内部是可以通过类对象名.私有成员名的方式进行访问的 } }
示例程序2:通过使用private[this]修饰符,将会导致在一个类的内部,方法是不可以访问这个类所构造的对象的私有成员的
class Student { private[this] val name = "zhang" def fun(aa:Student) { //报错:println(aa.name) //原因:通过使用对象私有属性机制,将会导致私有属性在类的内部不可以通过类对象名.私有成员名的方式进行访问的 } }
如有问题,欢迎留言指正!
- 大数据系列修炼-Scala课程06
- 大数据系列修炼-Scala课程01
- 大数据系列修炼-Scala课程02
- 大数据系列修炼-Scala课程03
- 大数据系列修炼-Scala课程04
- 大数据系列修炼-Scala课程05
- 大数据系列修炼-Scala课程07
- 大数据系列修炼-Scala课程08
- 大数据系列修炼-Scala课程09
- 大数据系列修炼-Scala课程10
- 大数据系列修炼-Scala课程11
- 大数据系列修炼-Scala课程12
- 大数据系列修炼-Scala课程15
- 大数据系列修炼-Scala课程17
- 大数据系列修炼-Scala课程18
- 大数据系列修炼-Scala课程19
- 大数据系列修炼-Scala课程20
- 大数据系列修炼-Scala课程21
- app引导页(背景图片切换加各个页面动画效果)
- C++ 通过虚函数表,直接外部访问类中的函数,并且脱离类
- 内存字节转成字符串打印
- 大量的QT控件及示例发放
- Android中TextView不获取焦点可以实现跑马灯的效果
- 大数据系列修炼-Scala课程06
- Eclipse的SVN插件与本地svn客户端关联详解
- Xcode 真机调试: AVAudioPlayer 模拟器有声音,真机耳机有声音,扬音器没有声音的解决办法
- CAS单点登录(三)--服务端改造(登录页及登录方式的自定义)
- PDF文档需要OCR文字识别吗
- angularjs-过滤器
- Things You Need To Know about Nolock
- 串结构练习——字符串连接
- 在windows系统中文件的实际大小与文件所占硬盘空间的大小