黑马程序员技术交流社区

标题: 程序有错,求帮忙。 [打印本页]

作者: Friends★    时间: 2012-4-25 17:43
标题: 程序有错,求帮忙。
/*求解释错误的原因?
* 还有就是能不能帮我描述一下这个程序详细的执行步骤?
*
* */

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


作者: 黄或俊    时间: 2012-4-25 17:47
  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. }
复制代码

作者: Friends★    时间: 2012-4-25 18:00
黄或俊 发表于 2012-4-25 17:47

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

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

呵呵……知道了,搞糊涂了!




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