62,621
社区成员
发帖
与我相关
我的任务
分享
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)
class MyTest {
public static void test(){
System.out.println(1);
}
}
class Test extends MyTest{
public static void main(String[] args){
Test t = new Test();
t.test();
}
public static void test(){
System.out.println(2);
}
}
静态方法,无法多态,结果是1;
class MyTest {
public static void test(){
System.out.println(1);
}
}
class Test extends MyTest{
public static void main(String[] args){
Test t = new Test();
t.test();
}
public static void test(){
System.out.println(2);
}
}
非静态方法,就正常啦,结果是2.
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") }
public void test2(){System.out.println("test2 from test")}
}
test es = new test();
es.test();//调用子类的静态方法
StaticTest st = new test();
st.test();//调用父类的静态方法
st.test2();//调用子类的方法
注意,静态方法是属于类的,所以也叫类方法,所以st.test()没有体现出多态