老是下面的提示:implicit super constructor Person() is undefined for default constructor .Must define an explicit constructor.
源程序如下:(我用的是eclipse编译器,还有我想问一下java的开发工具选择哪一个比较好用.)
package test;class Person
{
protected String name;
protected int age;
public Person(String name,int age)
{
this.name=name;
this.age=age;
}
public void print()
{
System.out.println("Name:"+name+"\nAge:"+age);
}
}
class Student extends Person
{

}
class Test {
public static void main(String args[])
{

}
}

解决方案 »

  1.   

    你的class Test是内部类了,把它写出去就可以了.
      

  2.   

    提示说 : 需要给person类定义一个 默认构造器
    public Person()
    {

    }
      

  3.   

    父类 也就是Person 类没有定义默认的构造函数。
      

  4.   

    要么在Person中定义一个默认的构造函数,要么在Student的构造函数里super一下Person的构造函数
      

  5.   

    Study chapter 2, section 7 of this book:SCJP Sun Certified Programmer for Java 5 Study Guide (Exam 310-055) 
    byKathy SierraandBert Bates 
    McGraw-Hill/Osborne 2006 (864 pages) 
    ISBN:0072253606 
      

  6.   

    加个无参数的构造函数,因为在继承的时候子类会自动调用父类的无参数的构造函数,如过你没有写其它的构造函数,编译器会自动为你加上,如果你写了编译器就不在加了,需要你自己写了
    public Person()
    {}
    就可以了
      

  7.   

    因为你的父类已经定义了一个有参的构造器,此时编译器不会为你调用默认的构造器,当子类继承时,必须在自己的构造函数显示调用父类的构造器,自己才能确保子类在初始化前父类会被实例化,如果你父类中有无参的构造器,字类就不会强制要求调用,即你写的那个就可以通过,编译器会默认帮你调用父类的构造器。按原来的思路,必须该成下面的:class Person {
      protected String name;
      protected int age;////你已经定义了自动的构造函数,此时编译器不会为你创建默认的构造函数
      public Person(String name,int age) { 
        this.name=name;
        this.age=age;
      }
      public void print() {
         System.out.println("Name:"+name+"\nAge:"+age);
      }
    }//由于父类的构造函数是有掺的,所以编译不会为你自动调用默认的构造函数,此时,子类在自
    //己的构造函数中必须显示的调用父类的构造函数
    class Student extends Person {
      public Student(){  //子类构造函数
        //super();   //不行,因为你的父类没有无参的构造函数
        super("a",1); //显示调用父类的构造函数,而且必须是第一行调用
     }
    }

    class Test {
      public static void main(String args[]){
      
     }
    }
      

  8.   

    楼上的果然详细呀....不过我还想问一下那这个子类怎么在Test这个类当中调用它呢?
    super("a",1);是给Student这个类初始化吗?
      

  9.   

    还有就是如果我在子类当中添加新的属性.那在哪里赋值呢?
    比如:Studnet这个子类我要添加学生编号.那调用父类的构造函数的话.
    因为父类的构造函数只定义了两个属性.如果把子类新添加的属性也打印出来呢?
     我是java初学者.我酷爱编程想和一些喜欢编程人交朋友.
    有好多地方不太懂.还请大家多多帮忙.谢谢了....