20210118——伴生类和伴生对象之间的关系及其执行顺序

https://blog.csdn.net/u012443641/article/details/89921243

1.简介
       本文主要通过反编译工具(jd-gui)查看scala代码文件编译之后的.class文件对应的java代码来理解伴生类和伴生对象之间的关系。


2.伴生类和伴生对象的区别和联系
       1. 关系
       伴生类中主要编写非静态代码,伴生对象中主要编写静态代码,静态代码包括属性和方法。scala中取消了static关键字,因此静态代码只能写到伴生对象中。伴生对象也是单例对象,多次修改其中的内容,后面的访问者获取到的则是最后一次修改之后的内容,而不是初始化内容。
       2. 使用
      伴生类中的属性和方法只能通过创建对象的方式访问;伴生对象中的属性和方法只能通过 类名. 的方式访问,不能创建对象。

 

https://blog.csdn.net/pzw_0612/article/details/48576569?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522161093670616780264052656%252522%25252C%252522scm%252522%25253A%25252220140713.130102334.pc%25255Fall.%252522%25257D&request_id=161093670616780264052656&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-2-48576569.pc_search_result_no_baidu_js&utm_term=apply%20scala

Scala 的apply 有2 张形式,一种是 伴生对象的apply ,一种是 伴生类中的apply,下面展示这2中的apply的使用。

示例代码:

  1. class ApplyOperation {
  2. }
  3. class ApplyTest{
  4.     def apply() = println("I am into spark so much!!!")
  5.     def haveATry: Unit ={
  6.         println("have a try on apply")
  7.     }
  8. }
  9. object ApplyTest{
  10.      def apply() = {
  11.           println("I  am into Scala so much")
  12.         new ApplyTest
  13.      }
  14. }
  15. object ApplyOperation{
  16.      def main (args: Array[String]) {
  17.         val array= Array(1,2,3,4)
  18.         val a = ApplyTest() //这里就是使用object 的使用         
  19.          a.haveATry
  20.          a() // 这里就是 class 中 apply使用
  21.     }
  22. }

运行结果

I am into Scala so much
have a try on apply
I am into spark so much!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值