没错,static方法是属于类的 class A { public static void a() { System.out.println("super!"); } } class TestStatic extends A { public static void a() { System.out.println("child"); } 这两个a方法完全没有关系.因为属于不同的类.obj.a();在执行的时候,由于obj是A类型,自然调用A.a(). 如果不是static,众所周知,派生类覆盖了父类的方法,这里应用了多态性.执行的是派生类的方法.
A.a();//因为根本不需要obj变量!!!但是如果不是静态,则方法a会被覆盖
class A {
public static void a() {
System.out.println("super!");
}
}
class TestStatic extends A {
public static void a() {
System.out.println("child");
}
这两个a方法完全没有关系.因为属于不同的类.obj.a();在执行的时候,由于obj是A类型,自然调用A.a().
如果不是static,众所周知,派生类覆盖了父类的方法,这里应用了多态性.执行的是派生类的方法.
还有 就是 TestStatic()类 继承的始终是类A()的内容的,只不过 你如果加上static,会把 函数a()(形象地说就是)"固定化"了~