动手动脑
当自定义了构造方法后,系统不会调用默认构造方法
解决方法:构造方法重载,再定义一个默认构造方法
类中数据的初始化,如果默认构造方法中没有赋值,初始化优先级:有参构造方法>类中赋值初始化?初始化块
如果默认构造方法中有赋值,优先级:默认构造方法=有参构造方法>类中赋值初始化?初始化块
其中类中赋值初始化与初始化块要看先后位置,谁在后面执行,谁优先级大
可以看出静态初始化块只执行一次,所以第二个值还是300
另外创建子类型的对象时,也会导致父类型的静态初始化块的执行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
public class Main {
public static void main(String[] args) {
InitializeBlockClass obj1= new InitializeBlockClass( 300 );
obj1.Show(obj1);
}
}
class InitializeBlockClass{
int n= 0 ;
static {
field= 200 ;
}
public static int field= 100 ;
public InitializeBlockClass( int value)
{
this .field=value;
}
public InitializeBlockClass(){
}
public static void Show(InitializeBlockClass a)
{
System.out.println(a.n);
}
}
|
可以用类对象作为参数传递给静态方法访问
使用静态方法输出了类的实例成员 n
标签:初始化,InitializeBlockClass,星期一,构造方法,static,public,赋值 From: https://www.cnblogs.com/chukjbgg333/p/17729045.html