scala中的class&object伴生对象和伴生类

scala中的class&object伴生对象和伴生类


scala中并没有像java一样同时拥有静态成员和非静态成员的类。

在scala中规定所有静态成员定义在object中,其他成员定义在class中

两个定义在同一个源文件中的,同名的,object和class,

object是class的伴生对象
class是object的伴生类

为什么叫做伴生对象,我认为既然里面定义的都是静态的,那这个object创建的所有对象都一样,可以理解为object就是一个对象。

在伴生类和伴生对象中可以互相访问对方的成员
要想让伴生对象创建的对象也能访问伴生类中的公开成员,必须要在伴生对象中复写一个方法,apply
返回值为该伴生类的对象


在创建对象时,使用new 关键字调用的是class中的构造方法,直接类名创建对象(如Array(1,2,3))调用的是object中的apply方法,类似java中的直接类名调用静态成员,只不过省略了apply方法名,这种情况是一些数组集合的默认初始化方式,但是如果自定义伴生对象中的apply方法没有创建并返回伴生类对象,那么只用只能通过new关键字创建对象,静态方法只能通过伴生对象调用(类名调用)。


如果一个class有伴生的object对象,那么这个class有多少个构造函数,object就要定义多少个apply函数,
apply参数列表同构造函数的参数列表

object   A{
	def main(args: Array[String]): Unit = {
	
	}
}
class    A{

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值