静态方法工作

时间:2015-07-10 08:13:27

标签: java

搞得很混乱......我读到静态方法没有覆盖,但在下面的程序中它没有遵循该规则......任何人都可以详细解释它。这是程序的输出是A类方法输出。

public class JavaApplication6 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       A a=new B();
       a.r();
    }

}
class B extends A{
    static int d=200;
    static void r(){
        System.out.println("hiiiiiiiiiiiiiiiii r"+d);
    }
}
class A {
   static int a=10,c=20;
  static void r(){
        System.out.println("hiiii ar"+a);
    }
}

3 个答案:

答案 0 :(得分:0)

子类不会覆盖静态方法。如果你输入@Override注释,它将给出一个编译错误,你不能覆盖它告诉删除注释。

“Child类型的方法method1()必须覆盖或实现超类型方法”

它继承到子类。

答案 1 :(得分:0)

静态方法不能被覆盖,但它可以隐藏父静态方法

有一个简洁的例子,请看这里。

这是java文档,解释了重写实例方法和隐藏类(静态)方法之间的区别。

  

覆盖:用Java覆盖只是意味着特定的方法   将根据对象的运行时类型调用,而不是   它的编译时类型(覆盖静态的情况)   方法)

     

隐藏:静态的父类方法不属于子级   class(虽然它们是可访问的),所以没有问题   压倒它。即使在子类中添加另一个静态方法,   与其父类中的一个相同,这个子类是静态方法   是唯一的,与其父类中的静态方法不同。

了解更多详情click here 希望它能帮到你。

答案 2 :(得分:0)

无法覆盖静态方法,您提供的代码是方法隐藏的示例。在上面的示例中,使用静态键工作隐藏了B类的方法。