任何人都可以向我解释为什么java允许您从实例访问静态方法和成员?一个不好的例子,如果我有一个名为RedShape的对象并且它有一个名为getColor()的静态方法返回"red",为什么java允许你从RedShape实例调用静态方法?对我而言,这似乎违反了OO语言设计的一些核心概念.至少,它应该带有编译器警告.
提前致谢.
编辑:
特别是,我问你什么时候有类似的东西
RedShape test = new RedShape();
test.getColor();
Run Code Online (Sandbox Code Playgroud)
其中getColor是RedShape类的静态方法.这没有任何意义,它是允许的,并没有通过javac在命令行上给出编译器警告.我看到它"强烈气馁",但很奇怪是否有一个技术或合理的理由背后为什么它被允许在"因为C++允许它"之外.