读书人

Static 方法是否可以被重写解决方案

发布时间: 2012-01-12 22:11:58 作者: rapoo

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

读书人网 >J2SE开发

热点推荐