public class StaticTest {
public static void test(){
}
public static void main(String[] args){
new test().test();
}
}
class test extends StaticTest{
public void test(){
}
}
//Exception in thread "main" java.lang.Error: Unresolved compilation problem:
// This instance method cannot override the static method from StaticTest
//
// at test.test(StaticTest.java:10)
// at StaticTest.main(StaticTest.java:6)
我知道静态方法是没有多态的,求高人解释,JAVA为什么要这样设计, 使得我用一个子类去继承一个父类的时候,当我把子类的一个非静态方法的签名与父类的静态方法签名一样的时候,会报错? ------最佳解决方案-------------------- 如果你子类没有test方法,通过
StaticTest t = new test;
t.test();//虽然不建议这样使用静态方法,但存在这样的用法
public class StaticTest
{
public static void test() //也可以直接去掉static
{
System.out.println("------------");
}
public static void main(String[] args){
new test().test();
}
}
class test extends StaticTest
{
public void test1() //可以这样改
{
System.out.println("____________________");
}
} ------其他解决方案-------------------- 记住这个
public class StaticTest {
public static void test(){
System.out.println("test from StaticTest")
}
public void test2(){
System.out.println("test2 from StaticTest");
}
}
class test extends StaticTest{
public static void test(){ System.out.println("test from test") }