一、
public class Test{ public static void main(String[] args) { Fool obj1=new Foo(); } } class Foo{ int value; public Foo(int initValue){ value=initValue; } }
以上代码无法通过编译,是因为类Foo是有参的,所以在引用的时候缺少参数。
结论:如果类提供了一个自定义的构造方法,将导致系统不再提供默认的构造方法。
二、
public class InitializeBlockClass { { field=200; } public int field=100; public InitializeBlockClass(int value){ this.field=value; } public InitializeBlockClass() { } public static void main(String[] args) { // TODO Auto-generated method stub InitializeBlockClass obj=new InitializeBlockClass(); System.out.println(obj.field); obj=new InitializeBlockClass(300); System.out.println(obj.field); } }
执行结果为
结论:1、执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个排在前面。2、执行类的有参构造函数是就执行里面的语句。
三、静态初始化块的执行顺序:
1、静态初始化块只执行一次;2、创建子类的对象时,也会导致父类型的静态初始化块的执行
原文:https://www.cnblogs.com/tianwenjing123-456/p/11695492.html