java - 静态方法和多态性

标签 java polymorphism overriding

我有一个简单的问题,但我想不出一个好的答案。为什么下面的Java程序显示20?如果可能的话,我希望得到详细的答复。

class Something{
    public int x;
    public Something(){
        x=aMethod();
    }
    public static int aMethod(){
        return 20;
    }
}
class SomethingElse extends Something{
    public static int aMethod(){
        return 40;
    }
    public static void main(String[] args){
        SomethingElse m;
        m=new SomethingElse();
        System.out.println(m.x);
    }
}

最佳答案

因为多态只适用于实例方法。

这里调用了static方法aMethod

public Something(){
    x=aMethod();
}

指的是在Something中声明的aMethod

关于java - 静态方法和多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28118392/

相关文章:

java - 单击 JButton 时椭圆形不改变颜色 - Java Swing

c++ - 在 C++ 中隐藏不同的 std::map 比较参数

ruby-on-rails - 具有多态关联的未知属性

ruby-on-rails - Rails 协会扩展 : Override a HABTM assignment (collection=) method

C++ 覆盖...覆盖?

java - Spring MVC Web 应用程序中未找到 Json Webservice

java - 有什么方法可以让 "inverted"剪辑区域用于 Java 绘画?

java - Redis 生菜发布

C# : Is Variance (Covariance/Contravariance) another word for Polymorphism?

swift - 如何在 Swift 中覆盖 NSDate 对象的 debugDescription