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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 叫我小强 中级黑马   /  2014-11-14 13:34  /  1172 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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);
}
}

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

2 个回复

倒序浏览
因为子类继承父类的时候,会继承父类中的数据,所以必须要看父类是如何对自己的数据进行初始化的;
  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 16:08
因为子类继承父类的时候,会继承父类中的数据,所以必须要看父类是如何对自己的数据进行初始化的;
感觉有 ...

虽然还是不太懂,但是还是得说声谢谢。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马