JAVA继承时父类子类都有静态代码块构造代码块时输出顺序问题

发布时间:2019-11-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了JAVA继承时父类子类都有静态代码块构造代码块时输出顺序问题脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
package cat1;   class fu{     public int num=10;     public fu() {         System.out.println("fu");     }  }    class zi extends fu{      public int num=20;      public zi() {          System.out.println("zi");      }      public void show() {          int num=30;          System.out.println(num);          System.out.println(this.num);          System.out.println(super.num);      }  }   public class test{     public static void main(String [] args) {  zi z=new zi();     z.show(); } }       

JAVA继承时父类子类都有静态代码块构造代码块时输出顺序问题

父类,子类 子类方法三者中有同名变量num时,调用子类方法输出,num输出30,为子类方法中的值,this.num表示子类中的值,super.num表示父类中的值。

2

class Fu {     static {         System.out.println("静态代码块Fu");     }      {         System.out.println("构造代码块Fu");     }      public Fu() {         System.out.println("构造方法Fu");     } }  class Zi extends Fu {     static {         System.out.println("静态代码块Zi");     }      {         System.out.println("构造代码块Zi");     }      public Zi() {         System.out.println("构造方法Zi");     } } public class test {public static void main(String []args)     {Zi z = new Zi();          } }

JAVA继承时父类子类都有静态代码块构造代码块时输出顺序问题

父类和子类都有静态代码块,构造代码块,构造方法,初始化子类对象。此时:
1.jvm调用了main方法,main进栈;
2.遇到Zi z=new zi(); 会将fu.class和zi.class 分别加进内存,再创建对象;
3.父类的静态代码块会随着fu.class一起加载,当zi.class进内存,子类当静态
代码块也会随着一起进去;
所以先输出静态代码块fu再输出静态代码块zi
4.走子类构造方法,先初始化父类,而父类有构造代码块
综上,顺序为 1父类静态代码块2子类静态代码块3父类构造代码块4父类构造方法
5子类构造代码块6子类构造方法

脚本宝典总结

以上是脚本宝典为你收集整理的JAVA继承时父类子类都有静态代码块构造代码块时输出顺序问题全部内容,希望文章能够帮你解决JAVA继承时父类子类都有静态代码块构造代码块时输出顺序问题所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: