构造器内部的多态方法
2016-10-28 21:17
169 查看
设计构造器的规则:
用尽可能简单的方法使对象进入就绪状态;如果可能,避免调用任何方法。
例子
输出:
Glyph() before draw()
RoundGlyph.draw(), radius = 0
Glyph() after draw()
RoundGlyph.RoundGlyph(), radius = 5
分析:
初始化的实际过程
在采取其他任何操作之前,为对象分配的存储空间初始化成二进制零。
就象前面叙述的那样,调用基础类构建器。此时,被覆盖的draw()方法会得到调用(的确是在RoundGlyph 构建器调用之前),此时会发现radius 的值为0,这是由于步骤1造成的。
按照原先声明的顺序调用成员初始化代码。
调用衍生类构建器的主体。
用尽可能简单的方法使对象进入就绪状态;如果可能,避免调用任何方法。
例子
abstract class Glyph { abstract void draw(); Glyph() { System.out.println("Glyph() before draw()"); draw(); System.out.println("Glyph() after draw()"); } } class RoundGlyph extends Glyph { int radius = 1; RoundGlyph(int r) { radius = r; System.out.println("RoundGlyph.RoundGlyph(), radius = " + radius); } void draw() { System.out.println("RoundGlyph.draw(), radius = " + radius); } } public class PolyConstructors { public static void main(String[] args) { new RoundGlyph(5); } }
输出:
Glyph() before draw()
RoundGlyph.draw(), radius = 0
Glyph() after draw()
RoundGlyph.RoundGlyph(), radius = 5
分析:
初始化的实际过程
在采取其他任何操作之前,为对象分配的存储空间初始化成二进制零。
就象前面叙述的那样,调用基础类构建器。此时,被覆盖的draw()方法会得到调用(的确是在RoundGlyph 构建器调用之前),此时会发现radius 的值为0,这是由于步骤1造成的。
按照原先声明的顺序调用成员初始化代码。
调用衍生类构建器的主体。
相关文章推荐
- 构造器内部的多态方法行为
- java 构造器内部的多态方法和行为
- 构造器内部的多态方法的行为
- Java中构造器内部使用多态方法导致的错误
- 构造器内部的多态方法的行为
- 构造器内部的多态方法的行为
- 构造器内部的多态方法的行为
- Java构造器内部多态方法这个坑
- 构造器内部的多态方法!!
- 构造器内部的多态方法的行为
- 构造器内部的多态方法的行为
- java构造器内部的多态方法
- 构造器内部的多态方法行为
- java 构造器内部的多态方法和行为
- Java构造器内部的多态方法的行为
- java基础--多态--构造器内部的多态方法行为
- [Java] 构造器内部的多态方法行为
- 构造器内部的多态方法的行为
- 在构造器内部调用多态方法
- java学习之构造器内部的多态方法的行为