我对scala非常陌生,现在我必须处理一个用scala和java编写的项目。我遇到了这样的建设:了解scala中的类和对象
class SomeType{
//...
}
trait Trait1 extends scala.AnyRef{
}
trait Trait2 extends extends scala.AnyRef{
}
class MyClass(arg : SomeType) extends Trait1{
//...
}
object MyClass extends Trait2{
//...
}
这是一种令人头脑麻木。据我读到这个answer我们可以认为object
s只是抽象方法的类。即我们可以(在我看来)在java中定义一些与Class<T>
对象的映射。
但在这个例子class
和object
延伸不同trait
秒。这就是我真的很困惑。我无法想象它是什么意思,为什么它被使用。
你的问题到底是什么? – marstran
我们不能将对象看作具有抽象方法的类。对象只是单身人士。 – dk14
你引用的答案是将对象看作是“隐式定义的类的单例”。也就是说,它也是一个对象。也许下面的链接可以帮助你:http://docs.scala-lang.org/tutorials/tour/singleton-objects.html。最值得注意的是它说“scala中没有静态关键字”。所以,对象被用在java程序员会认为静态的地方。为什么区别?他们来自不同的思想流派。 Scala受Haskell影响很大,Java受C/C++影响很大。 –