对象属性初始化
1.声明该属性的时候初始化。
2.构造方法中初始化。
3.初始化块。
public class Hero2 {
public String name="well done";//声明时初始化
protected float hp;
float maxHP;
{
maxHP=100;//初始化块
}
public Hero2(){
hp=200;//构造方法中初始化
}
}
类属性初始化
1.声明该属性的时候。
2.静态初始化块。
package com.ly.character;
public class Hero3 {
public String name;
protected float hp;
float maxHP;
//物品栏的容量
public static int itemCapacity=8;
static{
itemCapacity = 6;//静态初始化块 初始化
}
public Hero3(){
}
public static void main(String[] args) {
System.out.println(Hero3.itemCapacity);
}
}
对象属性的初始化有三种方式
故意把初始化块,放在构造方法下面,问题:
这三种方式,谁先执行?谁后执行?
package com.ly.initclass;
public class Hero {
public String name=getName("属性声明");
public Hero(){
name=getName("构造方法");
}
{
name=getName("初始化块");
}
private String getName(String name) {
System.out.println("初始化块"+name);
return name;
}
public static void main(String[] args) {
new Hero();
}
}
应该是属性显式声明和初始化块是同一优先级的!其次才是构造方法。
你可以试着把初始化块放在属性显式声明的方面打印看看效果,
例如int a=1; int b =2;谁放上面谁放下面没有任何区别,同理与初始化块和属性显式声明,只是不符合平时的代码书写习惯。
属性赋值顺序(按优先级):1.属性默认初始化 2.属性显式初始化/初始化块 3.构造器中初始化 4.对象.属性/对象.方法。