想问一个问题,子类既然是继承了超类,也就继承了超类中的构造函数,那为什么不能直接调用子类中已经继承下来的构造函数呢?比如:
class SuperClass{
  private String myName;
  private int myAge;
  SuperClass(String name, int age)
    {
      myName=name;
      myAge=age;
    }
  
  SetPerson(String name, int age)
    {
      myName=name;
      myAge=age;
    }
}class SubClass extends SuperClass{
  public static void main(String args[])
    {
      SubClass oa=newSubClass("AA",22);
    }
}改为:
class SubClass extends SuperClass{
  SubClass(String name, int age)
    {
      super(name,age);
    }
  public static void main(String args[])
    {
      SubClass oa=newSubClass("AA",22);
    }
}
后可以通过。

解决方案 »

  1.   

    因为子类调用构造函数必然调用父类的构造函数,一般无参的就默认了,有参数就要显式调用,比如super(name,age);你的父类只有带参的构造函数,子类调用构造的函数找不到可以调用的父类构造函数,自然出错了
      

  2.   

    如果按照楼上的说法,是不是程序改成这样就可以了呢?(我没测试呢)
    class SuperClass{
      private String myName;
      private int myAge;
      SuperClass()
        {
          myName="AA";
          myAge=22;
        }
      
      SetPerson(String name, int age)
        {
          myName=name;
          myAge=age;
        }
      public void Prt()
        {
          System.out.println("Name="+name+" Age="+age);
        }
    }class SubClass extends SuperClass{
      public static void main(String args[])
        {
          SubClass oa=newSubClass();
          oa.prt();      
        }
    }
      

  3.   

    兄弟你的方法名的命名规则没有掌握啊
    改了一下可以通过
    class SuperClass{
      private String myName;
      private int myAge;
      SuperClass()
        {
          myName="AA";
          myAge=22;
        }
      
      void setPerson(String name, int age)
        {
          myName=name;
          myAge=age;
        }
      public void prt()
        {
          System.out.println("Name="+myName+" Age="+myAge);
        }
    }class SubClass extends SuperClass{
      public static void main(String args[])
        {
          SubClass oa=new SubClass();
          oa.prt();      
        }
    }
      

  4.   

    一着急写错了!哈哈。见笑见笑。
    以前是写pascal的,老觉得procedure不用返回值类型……