问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

当java父类和子类都有构造函数时,求子类对象初始化过程详解

发布网友 发布时间:2022-05-10 12:57

我来回答

2个回答

热心网友 时间:2023-10-09 20:31

你好,初始化过程是这样的:
1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化;
2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化;
3.其次,初始化父类的普通成员变量和代码块,在执行父类的构造方法;
4.最后,初始化子类的普通成员变量和代码块,在执行子类的构造方法;
最后,给你个例子吧。你运行着帮助理解。
class Super{
public static int a ;
private int b ;

static{
System.out.println("此时a的值为:" + a) ;
a = 10 ;
}
public Super(){
System.out.println("此时a的值为:" + a) ;
System.out.println("此时b的值为:" + b) ;
b = 20 ;
}
{
System.out.println("此时b的值为:" + b);
b = 30 ;
}
}
class Sub extends Super{
public static int aa ;
private int bb ;

static{
System.out.println("此时aa的值为:" + aa) ;
aa = 10 ;
}
public Sub(){
System.out.println("此时aa的值为:" + aa) ;
System.out.println("此时bb的值为:" + bb) ;
bb = 20 ;
}
{
System.out.println("此时bb的值为:" + bb);
bb = 30 ;
}
}
public class ConstructorTest {
public static void main(String[] args) {
new Sub() ;
}
}

热心网友 时间:2023-10-09 20:31

每次当用new关键字创建出一个子类对象时,那么程序会先执行父类中不带参数的构造函数,然后再执行子类的构造函数.

eg: 我建了三个类,一个是父类(A_constructor) , 第二个是子类(B_constructor) , 第三个是测试用的类(Test_constructor) . 代码及运行结果如下

父类:
public class A_constructor {
public A_constructor(){
System.out.println("父类的无参数的构造函数A_constructor()");
}
public A_constructor(int n){
System.out.println("父类带参数的构造函数A_constructor(n) : "+n);
}
}

子类:
public class B_constructor extends A_constructor{
public B_constructor(){
System.out.println("子类的无参数构造函数B_constructor()");
}
public B_constructor(int n){
System.out.println("子类带参数的构造函数B_constructor(n): "+n);
} }

测试类:
public class Test_constructor {
public static void main(String args[]){
B_constructor one = new B_constructor(); //不带参数
B_constructor two = new B_constructor(2); //带了参数
System.out.println("测试结束");
}
}

运行结果:

父类的无参数的构造函数A_constructor()
子类的无参数构造函数B_constructor()
父类的无参数的构造函数A_constructor()
子类带参数的构造函数B_constructor(n): 2
测试结束

参考资料:http://e.codepub.com/2010/0108/19524.php

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ipad mini2怎么看小说 关于ipadmini的几点疑惑 苹果平板图书阅读软件推荐推荐一个苹果可以用的免费看小说app 风冷无霜为什么噪音大 华为matepad11多大尺寸的 applewatch可以发微信语音吗? 人类基因组组成 仅从染色体照片(黑白非显带的)能否区别X染色体和C组染色体? ...车子加速不上来是什么原因,节气门清洗过了也不行? 换了变数箱油洗了节气门 提速慢了 停下来起步根本没力气 三合一15瓦的鱼缸增氧泵清洗完之后不出气了,而且进气管会往出流水 鱼缸的增氧泵有一个沙盘不出汽泡了怎么办 java静态初始化器对什么进行初始化 Java程序的初始化过程 使用应用微信分身注册一个没有绑定视频号发不了作品 冬季怎样用空调取暖 空调暖气怎么调度数暖一点 和电话卡号不是本人的怎么能查找新冠疫苗接种信息 1分钟能做什么? 如何通过搜索公众号 一秒钟能做什么事情? 一分钟,十五秒,一秒能做什么 一秒还能做什么 考军校都检查什么? 电脑机箱里的大纽扣电池是干什么的? 电脑主机里面那个纽扣电池 是干嘛的呀! 电脑主机里一颗纽扣电池有什么用? 失望不可怕,怕的是心存侥幸不够绝望.什么意思 电脑主机里面的纽扣电池有什么用处? 对无望之缘在心存侥幸什么意思 怎么不出泡了?鱼缸里的增氧泵运转着? 鱼缸里的水不冒水泡了是怎么回事啊? java语言,什么是初始化啊?初始化和实例化一样吗? java 先初始化和赋值 鱼缸氧气泵放桶里能出气泡,放大鱼缸不出气泡是什么意思? 葱油蒜油的制作方法窍门 ppt背景音乐设置怎么一直循环播放啊 可以定制笔记本电脑吗? 应该怎样让一年级的孩子学画画?买画册他自己照着画可以吗? 孩子在一年级,想学画画,这个年龄学什么内容合适? 低年级的小学生用简笔画宝塔怎么画?哪位有经验的请速给指点一下! 怎样才能让一年级的孩子懂得比谁多比谁少的问题 只有手机号能查到还未收到的快递吗? 如何查未收到的忙人递件 换个苹果6sP的屏幕多久 快递没收到怎么查询? 我的快递好几天了还没收到有没有人知道查快递怎么查 两个月没有收到快递的信息与电话,该怎么查询? 有关于专利申请中不属于实用新型保护客体的答复审查意见。。。 养老保险个人缴费标准是多少钱一个月多少钱