OK, 第一abstract显然是与多态相关的,而static是静态的, public class A { public static void foo() { System.out.println("A"); } } public class B extends A { public static void foo() { System.out.println("B"); } } A a = new A(); B b = new B(); A c = new B(); A.foo(); B.foo(); // 以下不推荐 a.foo(); b.foo(); c.foo();
第三,synchronized是运行时的机制,与上面讲的方法签名无关 假设可以abstract+synchronized public abstract class A { public abstract synchronized void foo(); } public class B extends A { public abstract void foo() { // 我就不同步,汝之奈何 } } 子类跟你唱反调,你抽象父类中声明的synchronized,一点用也没有
第一abstract显然是与多态相关的,而static是静态的,
public class A {
public static void foo() {
System.out.println("A");
}
}
public class B extends A {
public static void foo() {
System.out.println("B");
}
}
A a = new A();
B b = new B();
A c = new B();
A.foo();
B.foo();
// 以下不推荐
a.foo();
b.foo();
c.foo();
假设可以abstract+synchronized
public abstract class A {
public abstract synchronized void foo();
}
public class B extends A {
public abstract void foo() {
// 我就不同步,汝之奈何
}
}
子类跟你唱反调,你抽象父类中声明的synchronized,一点用也没有
http://blog.csdn.net/yidinghe/archive/2009/03/02/3946967.aspx