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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Friends★ 中级黑马   /  2012-4-25 17:43  /  2140 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*求解释错误的原因?
* 还有就是能不能帮我描述一下这个程序详细的执行步骤?
*
* */

class Super
{

        int i=0;       
        public Super(String s)
        {
                i=1;       
        }
}
class Demo extends Super
{
        public Demo(String s)
        {
               
                i=2;                       
        }
        public static void main(String[] args)
        {
                Demo d=new Demo("yes");
                System.out.println(d.i);
        }
}

5 个回复

倒序浏览
  1. class Super
  2. {

  3.         int i=0;   
  4.                 Super(){}//第三步
  5.         public Super(String s)
  6.         {
  7.                 i=1;        
  8.         }
  9. }
  10. class ExtendsDemo3 extends Super
  11. {
  12.         public ExtendsDemo3(String s)//第一步
  13.         {
  14.                 //这里有一句默认的super();  第二步执行默认super();
  15.                                 //子类的每个构造方法中的第一句系统都会默认加上super();你的父类中没有空参数的构造方法,所以报错
  16.                 i=2;                        
  17.         }
  18.         public static void main(String[] args)
  19.         {
  20.                 ExtendsDemo3 d=new ExtendsDemo3("yes");  
  21.                 System.out.println(d.i);
  22.         }
  23. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
黄或俊 发表于 2012-4-25 17:47

再追问一下,不是说当类中没有构造方法时,系统会默认添加一个空参数的构造方法的吗?那为什么这个程序中没有添加一个呢,反而要手动的添加! 我就是这个搞不明白?
回复 使用道具 举报
当类中没有构造方法时系统默认的空参数的构造方法是在类中一个构造方法也没有的前提下,你这个里面貌似有一个有参数的吧,既然有一个了,那咱就不默认了呗
回复 使用道具 举报
Friends★ 发表于 2012-4-25 18:00
再追问一下,不是说当类中没有构造方法时,系统会默认添加一个空参数的构造方法的吗?那为什么这个程序中 ...

貌似我都不用回答啦!
只要你手动添加了构造方法,不管是有参还是无参,系统都不会给你添加的
防止你贪心嘛!就不给你咯!
回复 使用道具 举报
索学超 发表于 2012-4-25 18:19
当类中没有构造方法时系统默认的空参数的构造方法是在类中一个构造方法也没有的前提下,你这个里面貌似有一 ...

呵呵……知道了,搞糊涂了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马