解决方案 »

  1.   

    你的HeadTeacher里没有默认的构造方法啊
    //构建一个班主任的实例
            HeadTeacher ht=new HeadTeacher();
    改为 HeadTeacher ht=new HeadTeacher(p);
    就好了吧
      

  2.   

    HeadTeacher 你没有定义无参的构造方法,加上就好了:
    public HeadTeacher (){}
    你定义了有参的,无参的就被覆盖了,再用无参的话必须显式声明出来。
      

  3.   

    HeadTeacher 类改为
    package persontest;public class HeadTeacher {
    private Person a;
    public HeadTeacher(){

    }
    public HeadTeacher(Person a)
    {
    this.a=a;
    }
    public void setName(String name)
    {
    a.setName(name);
    }
    public String getName()
    {
    return a.getName();
    }
    public void setAge(int age)
    {
    a.setAge(age);
    }
    public int getAge()
    {
    return a.getAge();
    }
    public void say()
    {
    System.out.println("我是班主任,我姓"+this.getName());
    }
    }
      

  4.   

        首先,错误提示“the constructor Headteacher() is not defined...”说Headteacher类的无参构造方法没有定义。
        来到Headteacher类里,只定义了一个有参构造方法(接收一个Person对象),而你又没有定义无参的构造方法(Headteacher()),那么在创建Headteacher对象的时候只能调用有参的构造方法。
        在代码第9行你调用的是Headteacher的无参构造方法(你并没有定义),因此系统报错,提示没有找到对应的构造器。
        另外,在Person类中,你没有定义任何一个构造方法,而在代码中创建对象却没有报错,是因为如果你在类中没有定义构造方法,系统会默认为你创建一个无参的构造方法(Person(){}),用来创建该类的对象。
        要修改的话,只要在Headteacher类中创建相应的无参构造方法就行了。
        我也是新人,一起加油吧。