Scala学习笔记(二)Scala面向对象编程

package com.study

/**
* Scala面向对象编程
*
* 1,在scala中类是用Class关键字
* 2,可以使用new ClassName的方式构建出类的对象
* 3,如果名称相同,则object中的内容都是class的静态内容,也就是说object中的内容class都可以在没有实例的时候直接去调用;
* 正是因为可以再没有类的时候去调用object的一切内容,所以可以使用object中的特定方法来创建类的实例,而这个特定方法就是apply方法;
* 4,object中的apply方式是class对象生成的工厂方法,用于控制对象的生成;
* 5,很多框架的代码一般直接调用抽象类的object的apply方法去生成类的实例对象:
* 第一:其秘诀在于apply具有类的对象生成的一切生杀大权,抽象类是不可以直接实例化的,在apply方法中可以实例化抽象类的子类,以Spark中的
* 图计算为例,Graph是抽象的class,在object Graph中的apply方法实际上是调用了Grap的子类GraphImpl来构建
* Graph类型的对象实例的,当然从Spark图计算的源码可以看出,GraphImpl的构造对象也是使用了object GraphImpl的apply方法;
* 第二:这种方式的神奇学校应在于,更加能够应对代表版本迭代或者修改的变化,这是更高意义的面向接口编程;
* 6,object HelloOOP是class HelloOOP的伴生对象,class HelloOOP可以直接访问object HelloOOP中的一切内容。
* class HelloOOP是object HelloOOP的伴生类,object HelloOOP可以直接访问class HelloOOP的一切内容,一个特例是用private[this]修饰的成员。
*
* 7,在定义Scala的Class的时候,可以直接在类名后面()里加入类的构造参数,此时在apply方法中也必须有这些参数
* 8,Scala中可以在object中提供多个构造方法
*/
class HelloOOP(age:Int){
var name="Spark"
def sayHello=println("Hi,My name is "+name+" I am "+ age + "years old")
println(sayHello)
}

object HelloOOP {
var number=0

def main(args: Array[String]): Unit = {
var helloOOP=HelloOOP()
helloOOP.sayHello
}


def apply():HelloOOP={
new HelloOOP(10)
}

def apply(age:Int ):HelloOOP={
new HelloOOP(age)
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值