谁能向我解释为什么 java 允许您从实例访问静态方法和成员?一个不好的例子,如果我有一个名为 RedShape 的类,并且它有一个名为 getColor() 的静态方法,它返回“red”,为什么 java 允许您从 RedShape 的实例调用静态方法?在我看来,这似乎违反了 OO 语言设计的一些核心概念。至少,它应该带有编译器警告。
提前致谢。
编辑:
特别是,我问你什么时候有类似的东西
RedShape test = new RedShape();
test.getColor();
其中 getColor 是 RedShape 类的静态方法。这没有任何意义,它被允许并且不会通过 javac 在命令行上发出编译器警告。我看到它“非常不鼓励”,但很好奇在“因为 C++ 允许它”之外允许它是否有技术或合理的原因。