class Base {
 private String name;
public Base(){
 name="base";
}
public void mention(){
System.out.println(name);}
}
 class Chila extends Base{
public Chila (){
  super("Chila");
  name="bb";}
}
public class Text{
 public static void main(String[] args){
 Chila c=new Chila();
 c.mention();}
}
 此程序错在那里了啊
super(“Chila”);
什么作用
为什么这么用

解决方案 »

  1.   

    Base类没有参数为String的构造构造
    super(xxx)表示调用父类构造函数.
    默认是调用无参的构造函数,但也可以自己指定要调用哪个父类构造函数.
    给Base 添加
    public Base(Stirng str)
    {
    name=str;
    }
    构造函数
      

  2.   

    接2楼,而且你的base中name是private的,你在child中不能修改啊,因为它没继承这个私有变量,你需要另外声明
      

  3.   

    顶class Base {
    private String name; public Base() {
    name = "base";
    } public Base(String str) {
    System.out.println(str);
    } public void mention() {
    System.out.println(name);
    }
    }class Chila extends Base { private String name; public Chila() {
    super("Chila");
    name = "bb";
    }
    }
      

  4.   

    你是不是想用super来调用隐藏的父类方法或是被子类隐藏的成员变量或是方法?如果是那样的话,应该是用super.***这种形式 好像super()不能接受参数...
      

  5.   

    不好意思啊 super能接受参数 刚才有点乱
      

  6.   

    依我看 你是想在子类中用super来调用父类的构造方法,但是你写的父类的构造方法是不带参数的,而你用super时却传递了一个参数 编译的时候就会出现错误
      

  7.   

    1:super表示直接父类
    super("ss");则表示父类中有一带有一个字符串参数的构造方法
    2.private修饰的属性(变量)只能在本类中被访问和修改,子类中不可以
      

  8.   

    这个很明显阿.你父类里面没有Base(String str){}这个构造方法,而你子类里面去调用super("aaa");当然会报编译错误阿.    把父类里面添加一个带参的构造方法!