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{

}

你可能感兴趣的:(scala)