scala 中class 和 object 的关系 以及使用apply方法创建对象

单例对象语法

1)基本语法

object Person{

val country:String="China"

}

2)说明

(1)单例对象采用object关键字声明

(2)单例对象对应的类称之为伴生类,伴生对象的名称应该和伴生类名一致。

(3)单例对象中的属性和方法都可以通过伴生对象名(类名)直接调用访问。

apply方法

1)说明

(1)通过伴生对象apply方法,实现不使用new方法创建对象。

(2)如果想让主构造器变成私有的,可以在()之前加上private。

(3)apply方法可以重载。

(4)Scala中obj(arg)的语句实际是在调用该对象的apply方法,即obj.apply(arg)。用以统一面向对象编程和函数式编程的风格。

(5)当使用new关键字构建对象时,调用的其实是类的构造方法,当直接使用类名构建对象时,调用的其实时伴生对象的apply方法。

1. object对象

此对象含义,不是类的实例的意思,就是object的直译。object是scala中一种和class平级的语法结构。为啥要有object?

scala运行最后要到jvm运行,jvm运行需要main函数,java中的main数,必须是public的,必须是static的,必须是void的!请问static在scala中能否做到?scala中没有静态这个概念!

所以于是乎,scala提供了一种结构object,来模拟java中的静态的行为,比如静态成员变量,静态方法。

2. 伴生类(对象)

scala中把在同一个scala源文件中定义的名称相同的class和object,互相称之为object的伴生类和class的伴生对象。

使用scala中的伴生对象的结构,就可以给一个普通的scala类添加类似java中的静态的行为,丰富class的api操作。

同时,有了伴生对象,并且覆盖了其中的apply(参数列表)方法,在创建对象的时候就可以省略new关键字,但是需要注意一点的是,apply的参数列表最好和class对应的构造器保持一致,同时返回值为class的类型。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值