Java中的类层次结构:
界面:集群,分类
类Kluster层次结构如下所示
Cluster <- ,
+-- Kluster
Classify <- '
文件:oop / Cluster.java
package oop;
public interface Cluster {
public String HELLO = "hello";
}
文件:oop / Kluster.java
package oop;
interface Classify {
public String GOODBYE = "good bye";
}
public class Kluster implements Cluster, Classify {
}
文件:oop / KlusterMain.java
package oop;
public class KlusterMain {
public static void main(String[] args) {
System.out.println(Kluster.HELLO);
System.out.println(Kluster.GOODBYE);
}
}
到现在为止一切都按预期进行.我可以打印HELLO和GOODBYE常数.
现在,当我尝试从Scala编译器访问它们时,它给出了错误.
档案:oop / cluster.scala
package oop
object cluster {
def main(args: Array[String]) {
val k = new Kluster
println(Cluster.HELLO)
println(Classify.GOODBYE)
println(Kluster.HELLO) // <- this is the problematic line
}
}
错误:
Scala Problem
value HELLO is not a member of object oop.Kluster
/scala-snippets/src/main/scala/oop/cluster.scala
line 8
为什么Scala无法解析Kluster对象同时实现Cluster和Classify接口的层次结构?
解决方法:
您确实知道将常量放入接口以在实现类中使用它们是不好的方法,不是吗?在Java中,您可以将final类与私有构造函数一起使用,并在需要时使用import static来缩短常量名称.在Scala中,您使用对象和导入.但是Scala没有静态字段的概念-它具有对象,它们可以正确地参与继承.用适当的面向对象的系统来统一Java中的静态字段是不可能的,因此在Scala中,您不能使用子类的静态成员(字段和方法).
另请参见here.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。