scala如何对待伴侣对象?

前端之家收集整理的这篇文章主要介绍了scala如何对待伴侣对象?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是 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静态成员不是任何实例的一部分,它生活在一个单独的不同生活中.

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

猜你在找的Scala相关文章