博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对象实例化过程
阅读量:6004 次
发布时间:2019-06-20

本文共 2444 字,大约阅读时间需要 8 分钟。

对象实例化过程:

1.看类是否已加载,未加载的话先初始化类。

2.在堆内存中分配空间。

3.初始化父类的属性

4.初始化父类的构造方法

5.初始化子类的属性

6.初始化子类的构造方法

实例:

package com.xm.load;public class Animal {    static String str = "I`m a animal!";    public String str1 = "I`m 10 years old @Animal";    static {        System.out.println(str);        System.out.println("加载父类静态代码块");    }    static void doing() {        System.out.println("This ia a Animal!");    }    public Animal() {        doing();        System.out.println(str1);        System.out.println("Animal 对象实例化");    }}class Dog extends Animal{    static String str = "I`m a dog!";    private String str1 = "I`m 10 years old @Dog";    static {        System.out.println(str);        System.out.println("加载子类静态代码块");    }    static void doing() {        System.out.println("This ia a dog!");    }    public Dog() {        doing();        System.out.println(str1);        System.out.println("Dog 对象实例化");    }    public static void main(String[] args) {        new Dog();    }}

运行结果:

I`m a animal!

加载父类静态代码块

I`m a dog!

加载子类静态代码块

This ia a Animal!

I`m 10 years old @Animal

Animal 对象实例化

This ia a dog!

I`m 10 years old @Dog

Dog 对象实例化

我们来看一下,重写过的父类方法,在加载父类时的情况。

实例:

package com.xm.load;public class Animal {    static String str = "I`m a animal!";    public String str1 = "I`m 10 years old @Animal";    static {        System.out.println(str);        System.out.println("加载父类静态代码块");    }    static void doing() {        System.out.println("This ia a Animal!");    }    public void todoing() {        System.out.println(str1);        System.out.println("加载子类的重写方法");    }    public Animal() {        doing();        todoing();        System.out.println("Animal 对象实例化");    }}class Dog extends Animal{    static String str = "I`m a dog!";    private String str1 = "I`m 10 years old @Dog";    static {        System.out.println(str);        System.out.println("加载子类静态代码块");    }    static void doing() {        System.out.println("This ia a dog!");    }    public void todoing() {        System.out.println(str1);        System.out.println("加载子类的重写方法");    }    public Dog() {        doing();        System.out.println("Dog 对象实例化");    }    public static void main(String[] args) {        new Dog();    }}

结果:

I`m a animal!

加载父类静态代码块

I`m a dog!

加载子类静态代码块

This ia a Animal!

null

加载子类的重写方法

Animal 对象实例化

This ia a dog!

Dog 对象实例化

由此可见,null代表着加载父类构造方法时,调用的todoing( )方法是子类的方法,且子类的属性的初始化过程发生在父类构造方法之后。

转载于:https://www.cnblogs.com/TimerHotel/p/java_newObject.html

你可能感兴趣的文章
PowerDesigner跟表的字段加注释
查看>>
w !sudo tee %
查看>>
javascript面试题:如何把一句英文每个单词首字母大写?
查看>>
URAL 1962 In Chinese Restaurant 数学
查看>>
计算 TPS,QPS 的方式
查看>>
洛谷⑨月月赛Round2 P3393逃离僵尸岛[最短路]
查看>>
群晖NAS使用Docker安装迅雷离线下载出现the active key is not valid.
查看>>
spring boot 2使用Mybatis多表关联查询
查看>>
Making HTTP requests via telnet - Tony's Place
查看>>
千元机市场再添“新宠”,红米Note7和vivo Z3谁才是千元王者
查看>>
荣耀10GT升级EMUI 9.0体验分享:这可能是最好用的手机操作系统
查看>>
ZStack基于华芯通打造ARM国产云平台 助力云上贵州多项应用
查看>>
200本“保护日记”记录黄山迎客松生长变化
查看>>
多方力量携手呵护“中华水塔”青海三江源
查看>>
互联网的下一波红利在哪里?
查看>>
拿姐姐身份证登记结婚竟然成了!婚姻户籍信息共享难在哪儿
查看>>
恒大造车加速,联手柯尼塞格打造顶级新能源车
查看>>
JAVA大神说一个例子让你几分钟学会Annotation
查看>>
富士康要用机器人生产iPhone了?那么多工人怎么办?
查看>>
Python获取当前页面内的所有链接的五种方法
查看>>