在编译时所分配的内存会一直存在(不会被回收),直到程序退出内存才会释放这个空间,在实例化之前这个方法就已经存在于内存,跟类的对象没什么关系。子类中如果定义了相同名称的静态方法,并不会重写,而应该是在内存中又分配了一块给子类的静态方法,没有重写这一说,只是单纯的名字重复了。
1 public class Fu { 2 public static void show() { 3 System.out.println("父类的静态方法"); 4 } 5 public void method() { 6 System.out.println("父类的一般方法"); 7 } 8 }
public class Zi extends Fu { public static void main(String[] args) { Fu fu = new Zi(); fu.show(); fu.method(); } public static void show() { System.out.println("子类的静态"); } public void method() { System.out.println("子类的一般方法"); } }
输出结果是:
父类的静态方法
子类的一般方法
原文:https://www.cnblogs.com/sunbr/p/11545010.html