加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala如何对待伴侣对象?

发布时间:2020-12-16 18:05:39 所属栏目:安全 来源:网络整理
导读:我是 Scala的新手,拥有 Java背景. 在java中我们想要在类的不同对象之间共享任何字段.我们声明该字段是静态的. class Car { static NO_Of_TYRES = 4; // some implementation.public int getCarNoOftyres(){ NO_Of_TYRES; // although it's not a good practi
我是 Scala的新手,拥有 Java背景.

在java中我们想要在类的不同对象之间共享任何字段.我们声明该字段是静态的.

class Car {
 static NO_Of_TYRES = 4;
 // some implementation.
public int getCarNoOftyres(){
       NO_Of_TYRES; // although it's not a good practice to use static without class name
                    //but we can directly access static member in same class  . 
  }


}

但是在Scala中我们不能在类中声明静态字段,我们需要使用对象(伴随对象).
在scala我们会这样做,

class Car {
 println(NO_Of_TYRES); // scala doesn't let us do that. gives error 
 println(Car.NO_Of_TYRES);// this is correct way. 

}

object Car {
 val NO_Of_TYRES: Int = 4;
}

我只是好奇,scala如何对待伴侣对象?
这两个关键词(类和对象)有什么不同?
为什么scala不允许我们直接在课堂上访问NO_Of_TYRES?

解决方法

我想引用关于同一主题的另一个答案: What are the advantages of Scala’s companion objects vs static methods?

另见Odersky的书Programming in Scala – Chapter 4 – Classes and Objects的第4.3节

Scala将所有内容视为其实例的纯对象.在这个视图中,java静态成员不是任何实例的一部分,它生活在一个单独的不同生活中.

使用关键字对象和一些语法糖的技巧,您可以实现相同的结果,但保持规定的原则:实例化该对象的单个实例,并提供该实例的全局访问点.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读