wordpress手机站h5优化,wordpress图片转内,深圳建溢公司招聘,网页设计与制作课程标准化项目申报书转载自 Java 父类子类的对象初始化过程摘要: Java基本的对象初始化过程#xff0c;子类的初始化#xff0c;以及涉及到父类和子类的转化时可能引起混乱的情况。1. 基本初始化过程#xff1a;对于一个简单类的初始化过程是#xff1a;static 修饰的模块#xff08;static变…转载自 Java 父类子类的对象初始化过程
摘要: Java基本的对象初始化过程子类的初始化以及涉及到父类和子类的转化时可能引起混乱的情况。1. 基本初始化过程对于一个简单类的初始化过程是 static 修饰的模块static变量和static 块 --- 按照代码顺序依次执行。 | 实例变量 及非static模块--- 按照代码顺序依次执行。 | 构造函数 --- 执行对应的构造函数。子类的初始化过程。 父类static修饰的模块 | 子类static修饰模块 | 父类实例变量和非static块 | 父类对应构造函数。当子类对应构造函数中没有显示调用时调用的是父类默认的构造函数。 | 子类实例变量和非static块 | 子类构造函数Class的static模块是唯一的所以只初始化一次。所有类的实例公用Class的static模块。static模块的初始化条件 ( From 引用1 ) 1遇到new、getstatic、putstatic 或 invokestatic这4条字节码指令时如果类还没初始化则触发初始化。对应场景是new实例化对象时、读或设置一个静态字段时被final修饰已在编译器把结果放入常量池的静态字段除外以及调用一个类的静态方法时 2对类进行反射调用时 3初始化子类。但父类还没有初始化时先触发父类初始化 4当虚拟机启动时需指定一个需要执行的主类包含main方法虚拟机会先初始化该类2. 关于覆盖和隐藏 覆盖被覆盖的方法相当于被擦除了不可恢复即使类型强制转换也无法调用。 隐藏一直保存的某个位置等需要的时候可以继续使用类型强制转换后可以调用。关于父类子类之间的覆盖和隐藏关系 From 引用2 1. 父类的实例变量和类变量能被子类的同名变量隐藏。 2. 父类的静态方法被子类的同名静态方法隐藏父类的实例方法被子类的同名实例方法覆盖。 3. 不能用子类的静态方法隐藏父类的实例方法也不能用子类的实例方法覆盖父类的静态方法否则编译器会异常。 4. 用final关键字修饰的最终方法不能被覆盖。 5. 变量只能被隐藏不会被覆盖子类的实例变量可以隐藏父类的类变量子类的类变量也可以隐藏父类的实例变量。 涉及的典型情况前提-----------------------------------------class B extends A{……}-----------------------------------------1 B instanceB new B();instanceB的初始化过程如第一部分中子类的初始化过程。此时instanceB中实际上有一个super的全部信息除了父类中被覆盖的实例方法但是当前的引用是子类的信息如果子类中没有的变量和方法则是从父类继承来。2A instanceA new B();此时父类A的变量和静态方法会将子类的变量和静态方法隐藏。instanceA此时唯一可能调用的子类B的地方就是子类B中覆盖了父类A中的实例方法。执行 B instanceB (B) instanceA; 后此时instanceB相当于 B instanceB new B();注意 (1) 这里唯一的覆盖的情况父类的实例方法被子类的同名实例方法覆盖。 这里方法调用变量时实际上是带有一个默认的this的。也就是此实例方法中调用的是当前Class的值。涉及到继承的情况时要十分注意superthis的情况。 (2) 在初始化的时候有两个阶段。第一步是申请空间第二步是赋值。 具体见 static的值和final static值在初始化时的区别。引用1 子类覆盖父类实例方法时调用子类的实例方法而此时子类的实例方法调用了子类中的变量此时static变量已经初始化但是实例变量并没有初始化。引用2这段代码来自引用2如何精炼如此有趣。值得一看。class Parent{int x10;public Parent(){add(2);}void add(int y){xy;}}class Child extends Parent{int x9;void add(int y){xy;}public static void main(String[] args){Parent pnew Child();System.out.println(p.x);} }引用 1. 类加载机制http://blog.csdn.net/kai_wei_zhang/article/details/8234146 引用 2. 隐藏和覆盖以及一个好例子http://www.cnblogs.com/binjoo/articles/1585342.html引用 3. 隐藏和覆盖http://renyanwei.iteye.com/blog/258304 引用 4. 基本的初始化过程http://www.cnblogs.com/miniwiki/archive/2011/03/25/1995615.html