动手动脑篇之类与对象
动手动脑篇之类与对象 (一)进行实验 请输入并运行以下代码,得到什么结果 ? (二)动手动脑 以下代码为何无法通过编译?哪儿出错了? 答:Foo obj1=new Foo()在此处调用的时候没有参数 (三)自找麻烦 如果一个类中既有初始化块,又有构造方法,同时还设定了字段的初始值,谁说了算? 答:执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。 执行类的构造函数。类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行。因此,适合于封装那些“对象创建时必须执行的代码”。 (四)进行实验 使用上页幻灯片中定义的类,以下代码输出结果是什么? 答:结果是100 300 依据代码的输出结果,总结 Java 字段初始化的规律。 答:执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。 执行类的构造函数 ,当有多个构造函数时,要通过参数区分。 类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行。因此,适合于封装那些“对象创建时必须执行的代码”。 (五)动手动脑 当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行。 class GrandFather { static { System.out.println("GrandFather的静态初始化块 "); } } class Father