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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


  1. package com.exam;




  2. class C {
  3.         public C() {
  4.                 aMethod();
  5.         }

  6.         public void aMethod() {
  7.                 System.out.println("在c");
  8.         }
  9. }

  10. public class test extends C {
  11.         public void aMethod() {
  12.                 System.out.println("在test");
  13.         }

  14.         public static void main(String[] args) {
  15.                 new test();
  16.         }
  17. }
复制代码
打印结果是:在test。这属于重写,我知道

但是为什么我只是new了一个test类的对象啊。事实就是还要去调用父类的构造方法?

这个理论基础是什么啊?到底为什么要这样啊

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

5 个回复

倒序浏览
在你这个例子中
子类在构造的时候肯定会使用父类的构造方法super();
因为子类继承了父类的数据,它必须知道父类是如何使用这些数据的

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9

查看全部评分

回复 使用道具 举报
李挺 发表于 2013-2-26 14:51
在你这个例子中
子类在构造的时候肯定会使用父类的构造方法super();
因为子类继承了父类的数据,它必须 ...

这句很关键:因为子类继承了父类的数据,它必须知道父类是如何使用这些数据的

谢谢
回复 使用道具 举报
子类构造对象时在子类的构造函数中第一行有个隐式的  super(); //调用父类构造方法,
所以就。。。。。你懂得
回复 使用道具 举报
子类构造对象时在子类的构造函数中第一行有个隐式的  super(); //调用父类构造方法
回复 使用道具 举报
super();的问题楼上已经说了。
对象在建立的时候,都会先建立它父类的那部分,对象就像洋葱,是一层一层的,最内层都是一个Object对象,然后按照继承树从上到下一层一层建立每层的部分。
孩子不会先于他的父母出生,所以子类的部分也不会先于它父类的部分被建立。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马