1.JVM先找指定的类字节码并加载进内存,并会先加载父类的字节码进内存;
2.在堆内开辟内存空间,分配内存地址;
3.在对象的内存空间中对对象的属性进行默认初始化;
4.调用对应的构造方法初始化;
5.在构造方法中第一行先调用父类的构造方法对父类进行初始化;(如果不显示指定父类构造方法,默
认为super());
6. 父类初始化完毕后,再对子类属性进行显式初始化;
7.再进行子类构造方法的特定初始化;
8.初始化完毕后,将对象的引(分配的内存地址)用返回。
例题解析
- //子类对象实例化的全过程
- public class TestDog {
- public static void main(String[] args) {
- Dog d = new Dog();
- d.setAge(10);
- d.setName("小明");
- d.setHostName("花花");
- System.out.println("name:" + d.getName() + " age:" + d.getAge()
- + "hostName:" + d.getHostName());
- System.out.println(d.toString());
- }
- }
- // 生物
- class Creator {
- private int age;
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public Creator() {
- super();
- System.out.println("this is Creator's constructor");
- }
- }
- // 动物类
- class Animal extends Creator {
- private String name;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Animal() {
- super();
- System.out.println("this is Animal's constructor");
- }
- }
- // 狗
- class Dog extends Animal {
- private String hostName;
- public String getHostName() {
- return hostName;
- }
- public void setHostName(String hostName) {
- this.hostName = hostName;
- }
- public Dog() {
- super();
- System.out.println("this is Dog's constructor");
- }
- }

我的微信
有问题微信找我