1844 0

第2课:Scala面向对象彻底精通及Spark源码阅读(2) [推广有奖]

  • 1关注
  • 8粉丝

硕士生

34%

还不是VIP/贵宾

-

威望
0
论坛币
305 个
通用积分
0
学术水平
5 点
热心指数
14 点
信用等级
2 点
经验
23002 点
帖子
73
精华
0
在线时间
135 小时
注册时间
2016-2-27
最后登录
2016-9-11

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
二、Scala中的Object实战详解


object

定义一个类同名的object对象,里面存放静态的成员或者方法,把该object对象称之为该类的伴生对象

175233mvgel8yzmpmj5exb.png

图3

在图3中,SparkContextobjectSparkContext的伴生对象,里面存放一系列静态的成员和静态的方法。而且,当我们第一次

调用SparkContext时,SparkContext伴生对象会被执行一次,仅此一次。下面是一个示例:

1753244ecrcloje9cpjb9l.png

4

图4中object Personclass Person的伴生对象,class Person称之为object Person的伴生类。伴生对象适合在里面定义一些工具方法,以及存放一些全局唯一的常量,节省空间。


//第一次调用:Person伴生对象的getSalary方法

//此时,我们发现:Person伴生对象被初始化,打印出字符串Scala

scala> Person.getSalary

Scala

res34: Double = 0.0


//第二次调用:Person伴生对象的getSalary方法

//此时,我们发现:Person伴生对象不再需要初始化,没有打印出字符串Scala

scala> Person.getSalary

res35: Double = 0.0

以上示例中确实验证了:伴生对象会被执行一次,仅此一次。

Scala中,我们在定义类的对象时, 一般都不会用new类名,再传入参数的方式来定义。而是直接用类名,或者类名加参数的方式。例如,我们重温下面的示例:

我们构造一个数组,其实是调用Array的伴生对象object Arrayapply方法。

scala> val array=Array(1,2,3)

array: Array[Int] = Array(1, 2, 3)


scala> val array=Array.apply(1,2,3)

array: Array[Int] = Array(1, 2, 3)

以上两种定义数组的方式效果是一样的。apply方法就是当前类的伴生对象的工厂方法。延伸一下,Java水平比较高的编程人员,在构造Java对象时,一般来说不会直接new一个类,而是通过工厂方法模式来创建。而Scala语言中,天生就支持这次模式,所以在具体类对象构造时,一般都是在伴生类的伴生对象的apply方法中去实现!这样可以控制对象的生成。



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:SCALA Spark 面向对象 Park SPAR Spark Scala DT_Spark 大数据

已有 1 人评分论坛币 收起 理由
daazx + 5 精彩帖子

总评分: 论坛币 + 5   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 21:01