class Footballteam 
{
int age,heigth,weight;
char sex;
public Footballteam(int age,char sex,int height,int weight){
         this.age=age;
 this.sex=sex;
 this.heigth=heigth;
 this.weight=weight;
}

}class Member1 extends Footballteam
{
String name;
public Member1(){super(23,'M',173,140);};
public Member1(String name){this.name=name;};
}class Captain extends Member1
{
public Captain(){super();};

}class B
{
public static void main(String[] args){
 
       Member1 c1=new Member1();
   System.out.println(c1.age);
  
}
}在第18行this处显示错误

解决方案 »

  1.   

    public Member1(String name){this.name=name;};
    由于父类没有默认的构造方法 
    所以你这个构造方法必须制定的方式来调用父类的构造方法
    你可以调用super父类构造方法 像
    public Member1(){super(23,'M',173,140);};
    或者也可以添加 this(); 
    调用另外一个构造方法来来初始化父类
      

  2.   

    public Member1(String name){this.name=name;}需要父类有空参数的构造方法,给你加进去了还有你代码里面public Footballteam(int age,char sex,int heighth,int weight)这个构造方法有一句有问题,改掉了代码里面{}之后不用加分号, 你貌似加了很多不必要添加的分号class Footballteam{
        int age,heigth,weight;
        char sex;    public Footballteam(){}    public Footballteam(int age,char sex,int heighth,int weight){
            this.age=age;
            this.sex=sex;
            this.heigth=heighth;  //这里修改
            this.weight=weight;
        }}class Member1 extends Footballteam
    {
        String name;
        public Member1(){
            super(23,'M',173,140);
        }
        public Member1(String name){
            this.name=name;
        }
    }class Captain extends Member1{
        public Captain(){
            super();
        }}public class B{
        public static void main(String[] args){        Member1 c1=new Member1();
            System.out.println(c1.age);    }
    }
      

  3.   

    或者主动再用有参数的父类的构造函数
    public Member1(String name) {
    // super();
    super(1, 'a', 11, 22);
    this.name = name;
    }
      

  4.   

    this调用本类的属性和构造方法
      

  5.   

    public Member1(String name){this.name=name;}需要父类有空参数的构造方法,给你加进去了还有你代码里面public Footballteam(int age,char sex,int heighth,int weight)这个构造方法有一句有问题,改掉了代码里面{}之后不用加分号, 你貌似加了很多不必要添加的分号Java code
    ……
    [/Quote]额。。还是不明白啊,
    public Member1(){
            super(23,'M',173,140);
        }这个不是已经有调用父类构造方法了吗?
    public Member1(String name){
            this.name=name;
        }即使这个构造方法要调用父类的构造方法 ( public Fotballteam(){} ) 的话,那父类的构造方法也应该是有带参数的啊?
    求解释。。
      

  6.   

    不是this的错
    首先,heigth字母写错了
    还有就是必须提供父类的无参数构造函数
      

  7.   

    class Footballteam  
    {
    int age,heigth,weight;
    char sex;
    public Footballteam(int age,char sex,int height,int weight){
    this.age=age;
    this.sex=sex;
    this.heigth=heigth;
    this.weight=weight;
    }}class Member1 extends Footballteam
    {
    String name;
    public Member1(){super(23,'M',173,140);this.name=name;};
    }class Captain extends Member1
    {
    public Captain(){super();};}class B
    {
    public static void main(String[] args){
      
    Member1 c1=new Member1();
    System.out.println(c1.age);
      
    }
    }
    输出23
      

  8.   

    你这里的Captain类没有什么实际意义,可以给它创建对象然后引用
    Captain c2=new Captain();
    System.out.println(c2.name);
    输出为
    23
    null   //你没有输入名字;对于上面几个问题:
    父类既然有了带参数的构造方法,系统就不会给它默认构造方法, 子类必须继承父类的构造器也就是构造方法;并且参数类型一样;用super()方法必须注意看父类的情况添加参数
      

  9.   

    如果this有错,应该是父类没有定义啦
      

  10.   

        public Member1(String name) {  --> 这是构造函数`!!  而且此构造函数 没有 明确调用 父类 构造函数  ``````
      

  11.   

    刚刚学的java,如果有说错的地方还请指点:
    如果子类的构造方法中没有显示地调用基类构造方法,则系统默认调用基类无参的构造方法
    如果子类的构造方法中既没有显式调用基类方法而基类又没有无参的构造方法,则编译出错楼主的失误应该就在这两句话里吧
      

  12.   

    public Member1(String name){this.name=name;}需要父类有空参数的构造方法:
       public Footballteam() {}如果子类的构造方法中没有显示地调用基类构造方法,则系统默认调用基类无参的构造方法
    如果子类的构造方法中既没有显式调用基类方法而基类又没有无参的构造方法,则编译出错