// This is Java
public class A {
public static int f// {
return 10;
}
}
public class B extends A {
public static int f// {
return 5;
}
}
public class Main {
public static void main/String[] args/ {
A a = new A//;
System.out.println/a.f///;
B b = new B//;
System.out.println/b.f///;
A ba = new B//;
System.out.println/ba.f///;
}
}
5 个回复
卫东
赞同来自:
状态不属于对象,不能继承,它不参与多态。 简单地说,静态不是面向对象的。
Scala, 另一方面,
是一个
面向对象。 比...多得多 Java, 谁几乎不愿意表现得像 C++, 吸引这种语言的开发人员。
这是一个发明的黑客 C++, 谁试图连接世界的世界和 OO 编程和哪些应该与落后的方式兼容 C. 他还以类似的原因录取了原语。
Scala 返回静态和原语,因为他们是前程序开发商需要绥缺的时间的遗留。 这些东西没有任何想要将自己描述为面向对象的语言的地方。
关于至于对于有关
为什么
这对真正的重要性是重要的 OO, 我要依靠复制并将这个片段从比尔韦纳克斯进入邮件列表:
但是,我看起来像这样:对象 singleton 让你
制作所需的静态东西非常简洁,但
当您需要时,也会受益于继承中。 一个例子是
, 这更容易测试程序的静态部分,因为您可以创建
模拟这些部件并在任何地方使用它们的功能。 然后B.
生产计划使用对象实现 singleton 这些
标志,但虚构的实例用于测试中。
我自己无法更好!
因此,如果您只想创建一个东西,那么静态和单身就可以做到这项工作。 但如果你想要这个东西从某个地方继承行为,那么静态就不会帮助你。
在我的经验中,你倾向于比你最初想到的更多,特别是在你使用之后 Scala 一段时间。
董宝中
赞同来自:
看看它:
https://groups.google.com/d/ms ... 2TIMJ
和
https://groups.google.com/d/ms ... GjpEJ
这是一个摘录:
我想一人
目标是更容易,让每个含义成为一个物体,
每种方法调用呼叫。 统计和基元 Java 是
在某些情况下制作语言的特殊案例
欲了解更多 "complicated".
但一个更大的问题,我认为它是有一些你可以比较的东西
静态的 Java 在 Scala /因为 Scala 我需要某种设计,比较了
静止 Java 为了 interop/, 但它受益于 OO
inheritance/polymorphism. Singleton 对象是真实的对象。 他们能
展开超类或混合功能并将其传递,但是
他们也是 "static" 通过它的本性。 事实证明是非常方便的
实践。
还要看看这次采访马丁奥克 /向下滚动到面向对象的创新 Scala/
http://www.artima.com/scalazin ... .html
这是一个摘录:
首先,我们希望成为一种纯粹的面向对象语言,其中每个值是对象,每个操作呼叫方法和某些对象的每个可变成员。 所以我们不想要静态,但我们需要一些东西来取代它们,所以我们创造了一个设计 singleton 对象。 但偶数 singleton 该对象仍然是全局结构。 因此,任务是使用它们尽可能小,因为当您有全局结构时,您可以再更改它。 您无法创建其实例。 检查很难。 以任何方式改变很难。
总结
:
从功能性编程的角度来看,静态成员通常被认为是坏的 /看到这一点
http://gbracha.blogspot.com/20 ... .html
吉兰达伯拉父亲 java 泛型。 它主要是由于全球州因副作用。/. 但 scala 不得不找到一种兼容的方法 Java /所以他必须保持静态/ 并最小化 /虽然没有完全避免/ 由于静态而创建的全球各州, scala 我决定将它们隔离在伴随的物体中。
相关对象还具有可扩展性的优点,即,使用遗传和混合组成的优点 /与静态功能的仿真分开 interop/.
裸奔
赞同来自:
1/
继承,如多态性,需要特殊规则。 这是一个例子:
如果你 100% 我们相信它是印刷的,它对你有好处。 rest 我们可以大胆地依靠强大的工具,如摘要
, 当然,这是可选的,友好的警告
"静态方法 f// 来自A型应该以静态方式提供"
. 这会引领我们
2/
"static way" 进入事物 - 这是另一种特殊规则,使一切复杂化。
3/
静态成员不能摘要。 我想你不能拥有一切正确吗?
又一次,在我认为这一点几分钟后,这只是对我来说来的事情。 我打赌,静态根本不适合范式的静态有一堆其他原因 OO.
喜特乐
赞同来自:
获得类似的结果
莫问
赞同来自:
“Static does not belong to objects”. 静态字段不能用于表示对象的状态。
, 因此,它是从物体中排斥的理性。