Scala面向对象编程

面向对象的核心并不是“封装”、“继承“、”多态“,它们只不过是支撑面向对象语言的语法和功能

面向对象的三个核心是:
1、对象本身并不关注消息从哪里来,要到哪里去,它只关心消息的处理本身,且对象是弱耦合的,是由消息与数据驱动的
2、一个对象的行为不影响另一个对象的行为,也就是说一个对象挂掉了,其他对象依然正常执行
3、面向接口编程是为了封装实现业务的不同而具体的细化
所以,java、scala等不是面向对象的语言而是支持面向对象开发的语言,他们有封装、继承、多态的核心及特点。

1、在Scala中定义类是用 class关键字
2、可以使用new className 的方式构建出类的对象
3、在scala文件中 object关键字修饰的与类名相同的对象中的内容都是class中的静态内容,也就是说object的函数、成员等在对象没有被实例化的情况下直接可以通过类名直接调用,正是因为在没有类的实例化的情况下可以调用object的内容,所以可以使用object中的特定方法来创建类实例,而这个方法就是apply方法

4、object中的apply方法时class对象生成的工厂方法,用于控制对象的实例化
5、很多框架的代码使用抽象类的object的apply方法实例化对象
(1)、其秘诀在于apply具有类对象实例化的生杀大权,抽象类是不可以直接实例化的,但在apply方法中可以实例化抽象类的子类
(2)、这种方式的神奇地方在于更加能够应对代码版本迭代或修改的变化,这是更高意义的面向接口编程
6、object HelloOOP 是class HelloOOP 的半生对象, class HelloOOP中可以访问object HelloOOP中所有的内容,class HelloOOP是object HelloOOP的伴生对象,object HelloOOP也可以访问class HelloOOP中的所有内容

7、在定义scala的类的时候可以直接在class 的后面的()中加入构造参数,此时object中的apply方法也需要有同样的构造参数
8、scala中可以在object中可以构造很多apply方法
9、scala中的很多集合都是通过apply的方式构造的,例如:Array

注:
1、函数本身是独立的,跟类没什么关系,
2、Spark的图计算非常非常简单,没几行代码(微信、淘宝、百度地图等都用到了图计算)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值