我是scala的新手,现在我必须处理一个用scala和java编写的项目.我遇到了类似这样的结构:
class SomeType{
//...
}
trait Trait1 extends scala.AnyRef{
}
trait Trait2 extends extends scala.AnyRef{
}
class MyClass(arg : SomeType) extends Trait1{
//...
}
object MyClass extends Trait2{
//...
}
Run Code Online (Sandbox Code Playgroud)
这有点麻木.据我所知,通过阅读这个答案,我们可以将objects视为仅使用抽象方法的类.即我们可以(在我看来)Class<T>在java中定义一些与对象的映射.
但在这个例子中class并object扩展了不同的 trait s.这就是我真正感到困惑的地方.我无法想象这意味着什么以及为什么使用它.
我将尝试object从了解Java的人的角度解释Scala 是什么.
在Java中,您可以定义"普通"类成员和static类成员.当某些东西(例如成员变量)static在Java中时,那么该成员变量只有一个实例,该实例由该类的所有实例共享.
在斯卡拉,没有static.与Java相比:无论你static在Java中做什么,你都会object在Scala中加入.
Scala object是一个单例 - 它只有一个实例,就像staticJava中只有一个实例的成员一样.
我希望能更清楚地了解Scala object究竟是什么.
Scala object可以像任何其他类或特征一样扩展类或特征,以便它继承在它扩展的类或特征中定义的内容.真的没有理由不应该这样做.
请注意,如果你有一个class和一个object同名的,那么这两个属于一起 - 他们可以看到彼此的私人成员.它object被称为类的伴随对象.
请注意,这并不能意味着object是类的一个实例.它不是 - 它是一个独立的东西站在课堂旁边.也许你对类和对象扩展不同特征的困惑来自于对这一点的误解.
| 归档时间: |
|
| 查看次数: |
137 次 |
| 最近记录: |