静态与非静态的区别
对于两个不同的类,A继承了B
public class B{
public static void test(){
System.out.println("BBBBB");
}
}
public class A extends B{
public static void test(){
System.out.println("AAAAA");
}
}
再来一个Application主函数类
public class Application{
public static void main(String[] args){
A a=new A();
a.test();
//父类的引用指向了子类
B b=new A();//注意这里同样是new A
b.test();
}
}
以上代码运行后会输出
AAAAA BBBBB
但是A、B类去掉static后
public class B{
public void test(){
System.out.println("BBBBB");
}
}
public class A extends B{
public void test(){
System.out.println("AAAAA");
}
}
再运行Application后会输出
AAAAA AAAAA
因为静态方法是类的方法,而非静态是对象的方法。
有static时,b调用的是B类的方法,因为b是B类定义的。
没有static时,b调用的是对象的方法,而b是用A类new的
即b是A new 出来的对象,因此调用了A的方法。



