黑马程序员技术交流社区

标题: 现在父类和子类到底要怎样又晕了。 [打印本页]

作者: 黑马-张洋    时间: 2013-2-26 14:47
标题: 现在父类和子类到底要怎样又晕了。

  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类的对象啊。事实就是还要去调用父类的构造方法?

这个理论基础是什么啊?到底为什么要这样啊
作者: 李挺    时间: 2013-2-26 14:51
在你这个例子中
子类在构造的时候肯定会使用父类的构造方法super();
因为子类继承了父类的数据,它必须知道父类是如何使用这些数据的
作者: 黑马-张洋    时间: 2013-2-26 14:55
李挺 发表于 2013-2-26 14:51
在你这个例子中
子类在构造的时候肯定会使用父类的构造方法super();
因为子类继承了父类的数据,它必须 ...

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

谢谢
作者: 贾文泽    时间: 2013-2-26 15:02
子类构造对象时在子类的构造函数中第一行有个隐式的  super(); //调用父类构造方法,
所以就。。。。。你懂得
作者: 黑马17期-闫东东    时间: 2013-2-26 18:05
子类构造对象时在子类的构造函数中第一行有个隐式的  super(); //调用父类构造方法
作者: 王昕    时间: 2013-2-26 20:54
super();的问题楼上已经说了。
对象在建立的时候,都会先建立它父类的那部分,对象就像洋葱,是一层一层的,最内层都是一个Object对象,然后按照继承树从上到下一层一层建立每层的部分。
孩子不会先于他的父母出生,所以子类的部分也不会先于它父类的部分被建立。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2