黑马程序员技术交流社区
标题:
创建对象时,如果父类和子类有相同成员变量
[打印本页]
作者:
dfmlcq
时间:
2016-4-21 22:37
标题:
创建对象时,如果父类和子类有相同成员变量
本帖最后由 dfmlcq 于 2016-4-21 22:39 编辑
想问下大家,结果的第二句里show方法被子类覆盖我能理解,但num不是已经在第一句被赋值为2了吗,为什么第二句num的值又变成0了?
class Fu{
int num=2;
{
System.out.println("父成员变量num为"+this.num);
}
Fu(){
show();
}
void show(){
System.out.println("父成员变量num"+this.num);
}
}
class Zi extends Fu{
int num=8;
{
System.out.println("子成员变量num为"+this.num);
}
Zi(){
show();
}
void show(){
System.out.println("子成员变量num为"+this.num);
}
}
public class test{
public static void main(String[] args){
new Zi();
}
}
/* 结果为:
父成员变量num为2
子成员变量num为0
子成员变量num为8
子成员变量num为8 */
想问下大家,结果的第二句里show方法被子类覆盖我能理解,但num不是已经在第一句被赋值为2了吗,为什么第二句num的值又变成0了?
作者:
hmjavaqinchi
时间:
2016-4-22 00:51
好帖vvv好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖好帖
作者:
hmjavaqinchi
时间:
2016-4-22 00:56
字符串子父类这是什么封装继承多态
作者:
dfmlcq
时间:
2016-4-22 16:08
有人能帮我看下吗
作者:
陈文广
时间:
2016-4-22 16:53
本帖最后由 陈文广 于 2016-4-23 20:36 编辑
这个题目考的是 面向对象的继承关系中 子父类的 创建对象的时候 程序执行的流程问题:首先:我们要知道一个程序要执行,首先JVM会去找main方法的入口,
1.这样会将main方法的所在的类的字节码文件加载进内存:main方法所在的类B的
静态代码块
会被执行因为静态代码块会
随着类的加载而加载
但是如果main方法所在的类B又继承了某个类A,那么类A的静态代码块会在类B的静态代码块执行前先执行. 因为java会先加载好父类后再加载子类
父类初始完毕后再初始化子类
2.在加载字节文件的同时 JVM会将所涉及到的类的 各个属性和方法都加载进内存 这其中就涉及到了
各个类的属性 的默认化
了 ,它是在创建对象之前就完成了的
并且是在本类的构造代码块之前就执行完毕
3.在创建对象之前 还有一步是 代码执行到的地方涉及到各个类的属性会
显示初始化
4.
默认初始化->显示初始化->构造代码执行->构造方法执行初始化
5.一般的执行循序是:
静态代码块->默认初始化->显示初始化->构造代码块执行->构造方法执行初始化
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2