子类重写父类的静态方法

"重写"只能适用于实例方法.不能用于静态方法.对于静态方法,只能隐藏,他只是形式上的被重写,“重写”是用来实现多态性的,只有实例方法是可以实现多态,

静态的他是在编译期就绑定了,因而它无法实现多态。

看下面的例子

public class A {
	public static void p(){
		System.out.println("AAA");
	}
}

public class B extends A{
	public static void p(){
		System.out.println("BBB");
	}
}

public class demo {

	public static void main(String[] args) {
		A a = new B();
		a.p();

	}

}
首先上面的demo程序有个问题,那就是访问静态的方法,无需实例化,而是直接A.p()  或者B.p()

上面的例子,他只是形式上上被重新了,然而,A类和B类中的p却不是一样的了,换句话说,此时a.p(),是调用的父类的p方法,因为父类的p方法在编译时已被绑定。


如果你直接A.p()  或者B.p(),你回发现A类和B类中的p方法打印了出来


爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img