日期:2014-05-20  浏览次数:20812 次

Static 方法是否可以被重写
Class   Base{

      public   static   void   stamethod(){
System.out.print( "Base ");

}

           
}

      public   class   ItsOver   extends   Base{

                          public   static   void   main(String[]   args)
      {

                                    ItsOver   so     =   new   ItsOver();
                                      so.stamethod();
                   

    }
                      public   static   void   stamethod(){


                              System.out.print( "aMethod   in   staOver ");


                          }
}

这个我认为是Static被重写了,但是做过SCJP的考卷,答案是Static方法不可以被重写,不懂,希高人指点。
               




------解决方案--------------------
我补充楼上的。。
覆盖是用于父类和子类之间。。
重写是用在同一个类中。。有相同的方法名。。但参数不一样。。
------解决方案--------------------
举个例子让你更明白;

======
class Father{
void method(){
System.out.println( "method of father ");
}

static void staticMethod(){
System.out.println( "static method of father ");
}
}

public class Son extends Father{
void method(){
System.out.println( "method of son ");
}

static void staticMethod(){
System.out.println( "static method of son ");
}

public static void main(String args[]){
Father son1 = new Son();//声明为Father类,son1静态方法和Father类绑

son1.method();
son1.staticMethod();

Son son2 = new Son();
son2.method();
son2.staticMethod();
}
}

============
method of son
static method of father
method of son
static method of son