黑马程序员技术交流社区

标题: 隐式super();的问题。。求帮助。。。。 [打印本页]

作者: 叫我小强    时间: 2014-11-14 13:34
标题: 隐式super();的问题。。求帮助。。。。
class Fu
{
       Fu()
        {
            System.out.println("fu run");
         }
}
class Zi extends Fu
{
             Zi()
             {
                    //super();被省略了。
                  System.out.println("zi run");
            }
            Zi(int x)
            {
               //super();
              System.out.println("zi..."+x);
           }
}
class ExtendsDemo
{
public static void main(String[] args)
{
    Zi z = new Zi();
  Zi z1 = new Zi(4);
}
}

没明白,为什么子类创建对象的时候非要去运行父类的构造函数呢?不是在本类中定义一个自定义的构造函数后,默认的构造函数就没有了吗?求解。。。

作者: 一叶障目    时间: 2014-11-14 16:08
因为子类继承父类的时候,会继承父类中的数据,所以必须要看父类是如何对自己的数据进行初始化的;
  1. class Fu
  2. {
  3.         int x;
  4.         int y;
  5.         Fu(){x=1;y=2;}
  6.         Fu(int x,int y){this.x=x;this.y=y;}
  7. }
  8. class Zi extends Fu
  9. {
  10.         int z;
  11.         Zi(){
  12.                 //super();
  13.                 this.z=3;
  14.         }
  15.         public String toString(){
  16.                 return x+","+y+","+z;
  17.         }
  18. }

  19. public class Demo2
  20. {
  21.         public static void main(String[] args){
  22.                 Zi zi=new        Zi();
  23.                 System.out.println(zi);
  24.         }
  25. }
复制代码

感觉有点勉强:P
作者: 叫我小强    时间: 2014-11-14 17:44
一叶障目 发表于 2014-11-14 16:08
因为子类继承父类的时候,会继承父类中的数据,所以必须要看父类是如何对自己的数据进行初始化的;
感觉有 ...

虽然还是不太懂,但是还是得说声谢谢。。。。




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