Scala伴生类和伴生对象

1、用class修饰的为伴生类,与java中的类相似,用object的修饰的为伴生对象,为的是解决scala中没有static关键字的问题。
2、伴生类与伴生对象可相互访问各自私有成员
3、伴生对象可为伴生类增加静态成员

源代码:
Scala伴生类和伴生对象_第1张图片
编译生成文件HelloScala$.class和HelloScala.classScala伴生类和伴生对象_第2张图片

Object HelloScala对象与HelloScala.class中的类相伴相生
HelloScala对象其实是HelloScala$类中单独定义的静态对象。
解释理解如下
利用反编译工具反编译这两个.class类,由于不是Java代码,所以反编译出来会比较奇怪,但是我们只看逻辑关系还是比较清晰的。

伴生对象的伴生类
Scala伴生类和伴生对象_第3张图片
伴生对象的所属类
Scala伴生类和伴生对象_第4张图片

scala的设计者认为java中有static关键字,所修饰的是面向类的,而不是面向对象的,认为这不是真正的面向对象,所以在scala中将static关键字删掉了,但为了实现类似scala中的功能,引入了伴生对象的概念。

你可能感兴趣的:(Scala,scala,java,开发语言)