package p1;
abstract class base {
public static void doSome3() {
System.out.println("base do some3");
}
public void doSome2() {
System.out.println("base do some2");
}
public abstract void doSome();
};
class derive extends base {
public static void doSome3() {
System.out.println("derive do some3");
}
public void doSome2() {
System.out.println("derive do some2");
}
public void doSome() {
System.out.println("derive do some");
}
};
public class test {
public static void main(String[] args) {
base b = new derive();
b.doSome();
b.doSome2();
b.doSome3();
}
}
小test,
结果:
derive do some
derive do some2
base do some3
java和c++有些不同,java不管是abstract还是普通非静态方法,都是根据引用指向的实际的对象的类型来选择调用哪个函数的(都类似于C++的虚函数),
但是对于类的静态函数,则是根据引用的类型来选择调用哪个函数。