"重写"只能适用于实例方法.不能用于静态方法.对于静态方法,只能隐藏,他只是形式上的被重写,“重写”是用来实现多态性的,只有实例方法是可以实现多态,
静态的他是在编译期就绑定了,因而它无法实现多态。
看下面的例子
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/天,具体规则查看活动详情