构造器初始化
来源:互联网 发布:淘宝店铺克隆软件 编辑:程序博客网 时间:2024/05/23 13:04
构造器初始化
1.初始化顺序
- 即使变量定义分散于方法定义之间,它仍会在任何方法(包括构造器)被调用之前得到初始化。
- 变量定义的先后顺序决定了初始化的顺序
例:
package clear;class Window { Window(int marker) { System.out.println("Window(" + marker + ")"); }}class House { Window w1 = new Window(1); House() { System.out.println("House()"); w3 = new Window(33); } Window w2 = new Window(2); void f() { System.out.println("f()"); } Window w3 = new Window(3);}public class OrderOfInitialization { public static void main(String[] args) { House h = new House(); h.f(); }}
运行结果:
Window(1)Window(2)Window(3)House()Window(33)f()
2.静态数据的初始化
静态初始化动作发生时间:当首次生成这个类的一个对象,或者首次访问属于那个类的静态成员数据时(只会执行一次)
初始化顺序:先静态对象(如果它尚未因前面的对象创建过程而被初始化),而后是“非静态对象”
例:
class Bowl { Bowl(int marker) { System.out.println("Bowl(" + marker + ")"); } void f1(int marker) { System.out.println("f1(" + marker + ")"); }}class Table { static Bowl bowl1 = new Bowl(1); Table() { System.out.println("Table()"); bowl2.f1(1); } void f2(int marker) { System.out.println("f2(" + marker + ")"); } static Bowl bowl2 = new Bowl(2);}class Cupboard { Bowl bowl3 = new Bowl(3); static Bowl bowl4 = new Bowl(4); Cupboard() { System.out.println("Cupboard()"); bowl4.f1(2); } void f3(int marker) { System.out.println("f3(" + marker + ")"); } static Bowl bowl5 = new Bowl(5);}public class StaticInitialization { public static void main(String[] args) { System.out.println("Creating new Cupboard() in main"); new Cupboard(); System.out.println("Creating new Cupboard() in main"); new Cupboard(); table.f2(1); cupboard.f3(1); } static Table table = new Table(); static Cupboard cupboard = new Cupboard();}/* * * //Output: * * Bowl(1) * * Bowl(2) * * Table() * * f1(1) * * Bowl(4) * * Bowl(5) * * Bowl(3) * * Cupboard() * * f1(2) * * Creating new Cupboard() in main * * Bowl(3) * * Cupboard() * * f1(2) * * Creating new Cupboard() in main * * Bowl(3) * * Cupboard() * * f1(2) * * f1(1) * * f1(1) */
阅读全文
0 0
- 构造函数初始化器
- 构造器初始化顺序
- 构造器初始化
- 构造器的初始化
- 构造函数初始化器
- Java 构造器初始化
- 构造器初始化
- 构造器确保初始化
- 构造器初始化_02
- 构造函数初始化器
- 初始化与构造器
- 构造器的初始化
- 构造器初始化
- 构造器与初始化块
- C# 构造函数初始化器
- 以构造器确保初始化
- 有多个构造器如何初始化
- java中的构造器初始化
- jena推理学习
- LeetCode-19. Remove Nth Node From End of List
- Smarty教程,语法与应用
- 数据查询之简单查询
- Windows Server2012,启动黑屏,只会弹出一个cmd命令窗口的解决办法
- 构造器初始化
- 定义函数接受任意个实参
- 6.7
- C# Winform 对用BindingList(List)作为数据源绑定的datagridview进行上下行移动操作
- 【Nginx】常用功能配置
- 网易云音乐 最美的评论
- ajax get提交中文参数乱码
- Linux下安装php环境并且配置Nginx支持php-fpm模块
- pojo类实现序列化接口的应用场景