黑马程序员技术交流社区
标题:
多态创建对象细节问题
[打印本页]
作者:
noiary
时间:
2014-8-27 16:05
标题:
多态创建对象细节问题
/**
* 多态练习
*/
class Person {
int i = 0;
Person() {
i++;
}
}
class Student extends Person {
Student() {
i += 5;
}
}
public class Demo {
public static void main(String[] args) {
Person p = new Student();
p.i ++;
System.out.println("p.i = " + p.i);
Person p2 = new Person();
System.out.println("p2.i = " + p2.i);
}
}
/*
运行结果为:
p.i = 7
p2.i = 1
我想知道当Person p = new Student(); 执行后,:
加载Student类,运行Student构造方法{ 运行Person() → 构造函数{ i++;} → i += 5; } ,
这些动作实际上是不是仅仅把父类的成员变量int i 以及构造函数 Person() 拿过来只在Student的类中进行运算而非跑到Person类中进行?
不然为什么p2.i的打印结果是1呢?
*/
复制代码
作者:
付剑翊
时间:
2014-8-27 17:28
你的问题涉及到函数执行的原理,构造函数也是函数,函数执行的时候会将函数压栈,执行结束后弹栈,都是在栈区进行,楼主的理解好像是去堆区里面对象内的空间去执行函数的感觉。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2