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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 芦曦 中级黑马   /  2012-9-4 04:23  /  1616 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 芦曦 于 2012-9-4 16:10 编辑
  1. class Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Per p =new Per("haha",5);
  6.                 p.show();
  7.         }
  8. }
  9. class Chi extends Per
  10. {
  11.         
  12. }
  13. class Per
  14. {
  15.         private String name;
  16.         private int age;
  17.         Per(String name,int age)
  18.         {
  19.                 this.name=name;
  20.                 this.age =age;
  21.         }
  22.         void show()
  23.         {
  24.                 System.out.println(this.name+"....."+this.age);        
  25.         }
  26. }
复制代码
大家帮我看看这段代码哪有问题哈!!!!

3 个回复

倒序浏览
    class Test
    {
            public static void main(String[] args)
            {
                    Per p =new Per("haha",5);
                    p.show();
            }
    }
    class Chi extends Per
    {
/*问题出现在这里,如果不显示调用父类的有参构造函数,系统会默认调用父类的无参构造函数super(),但是父类中没有无参构造函数,那它就不能调用,所以编译就无法通过!
可以为父类添加一个无参构造函数,或者显示调用父类的有参构造函数!
*/
            
    }
    class Per
    {
            private String name;
            private int age;
            Per(String name,int age)
            {
                    this.name=name;
                    this.age =age;
            }
            void show()
            {
                    System.out.println(this.name+"....."+this.age);     
            }
    }
回复 使用道具 举报
你的父类Per的构造函数是Per(String name,int age),是有2个参数的。
在你的子类Chi中,你没有写构造函数,默认的是:Chi () {   super()  }
你要注意的是子类构造函数都会隐式地调用父类的构造函数:super()。但是你的父类中没有无参数的构造函数。修改方法:
1) 在父类中定义无参数构造方法Per(){}
2) 在子类的构造函数中指明要调用的父类构造函数是Per(String name,int age)。


回复 使用道具 举报
本帖最后由 张飞年 于 2012-9-4 11:16 编辑
  1. 09.class Chi extends Per{

  2. 10.{
复制代码
很简单,只是一个细节问题:
这里的子类Chi继承父类时,需要先初始化父类,初始化默认调用父类Per的无参构造函数--super()--Per(){...}  ,而父类中只是一个有参构造函数,(当构造函数有参数时,无参的构造函数会省略,也就是说无参构造函数是一个“最低生活保障”,无则加,有则无)。
可以这样改正:

  1. class Chi extends Per{
  2.   super(n,m);
  3. }
  4. //或者:
  5. class Per{
  6.     private String name;
  7.     private int age;
  8.     Per(){//这里加个空构造函数即可
  9.     }
  10.     Per(String name,int age){
  11.     this.name=name;
  12.     this.age=age;
  13.    }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马