A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在new 类名();执行后,
代码的执行顺序应该是
1.子类构造进栈;
2.父类构造进栈;
3.父类构造出栈;
4.子类构造出栈;
应该是这样没错吧?
那么问题是,系统是否也给父类实例化了一个对象在内存中?

7 个回复

倒序浏览
本帖最后由 fei9ci 于 2016-3-21 23:08 编辑

class Test{
        public static void main(String[] args) {
                Son s = new Son();
                s.show();
                s.speak();
        }
}

class Father {
        int num1 = 1;
        public void speak() {
                System.out.println("i am father");
        }
}

class Son extends Father {
        public void show() {
                System.out.println(num1 + "son");
        }

}
运行结果
1son
i am fathe
回复 使用道具 举报
fei9ci 发表于 2016-3-20 23:23
class Test{
        public static void main(String[] args) {
                Son s = new Son();

如果父类是抽象类呢?
回复 使用道具 举报
抽象类不能被实例
回复 使用道具 举报
fei9ci 发表于 2016-3-20 23:34
抽象类不能被实例

那么子类时从哪里获得的父类的属性和方法的?
回复 使用道具 举报
调用父类的构造方法不代表就生成了对象
回复 使用道具 举报
父类虽然不能实例化,但是有构造方法,子类继承父类后,继承了父类的构造方法,然后在子类中初始化

好像是这样·····不确定
回复 使用道具 举报
fei9ci 中级黑马 2016-3-21 23:07:48
8#
子类调用父类中的构造方法,是通过super在内存中创建对象来实现的,今天问过
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马