对象的实例化过程简说
-
-
在栈中开辟引用变量的空间, 变量值为null;
-
调用new在堆中开辟内存,并初始化属性(父类和子类) int 0; double 0.0; String null;
-
子类构造方法进栈,
-
显式初始化父类属性(如果有)
-
父类构造方法进栈,执行完后出栈
-
显示初始化子类属性(如果有)
-
调用方法进栈,初始化局部变量,赋值,执行完后出栈,方法被垃圾回收器处理
-
初始化完毕后,将堆中的对象地址赋值给引用变量
-
子类构造方法出栈
tip:
-
java中对于属性的赋值顺序
-
默认初始化,>>显示初始化/代码块初始化, >>构造初始化, >>对象.属性初始化
-
显示初始化 / 代码块初始化,那个在前,那个先初始化
-
-
String类型的变量值引用的为字符串常量池中的地址
-
常量在类加载过程,链接阶段中的解析步骤时就已经初始化 protected final int SEX=1;
-
public class Test{
public void main(String[] args){
Son s=new Son();
s.showSay("good");
s.setWY("用枪棍");
s.name="花木兰";
System.out.println(s);
}
}
class Person{
private String wuyi;
String name;
int age;
protected final int SEX=1;
public Person(){
}
public void showWuYi(String wuyi){
System.out.println(wuyi);
}
public void setWY(String wuyi){
this.wuyi=wuyi;
}
}
class Son extends Person{
public Son(){
}
String say;
double weight=45;
public void showSay(String say){
say="巧舌如簧";
System.out.println(say);
showWuYi("摔跤,擒拿");
}

浙公网安备 33010602011771号