日期:2014-05-20  浏览次数:20683 次

继承访问问题不明白!
class Animal
{
public String name;
Animal(String name)
{
this.name=name;
}
public void evey()
{
System.out.print("叫声......");
}
}

class Cat extends Animal
{
String fulColor;
Cat(String name,String fulColor)
{
super(name);
//this.name=name;//为什么不能这样访问,在passcall语言是允许这样访问,子类继承了父类的所有成员,
  //那Cat这个类也应有了name成员变量,就应该可以这样访问啊,请各位发表看法
this.fulColor=fulColor;
}
public void evey()
{
System.out.println("猫叫声......");
}
}

------解决方案--------------------
java中规定:
子类的所有构造方法都必须调用父类的一个构造方法 
如果不显示制定调用父类的哪个构造方法,就默认调用父类的无参构造方法
------解决方案--------------------
楼主好固执,4楼明明已经回答你的问题了,你自己不会懂脑子想想么?你的基类中没有无参的构造方法,而派生类必须调用基类的构造方法,这时如果你不显式地使用super(...),编译器怎么知道你在调用基类的构造方法?你如果实在不想用super(name),就用super(null)也行啊;要么你必须在基类中加一个无参的构造方法。
------解决方案--------------------
引用楼主 xu_zhixiang 的帖子:
class Cat extends Animal
{
String fulColor;
Cat(String name,String fulColor)
{
super(name);
//this.name=name;//为什么不能这样访问,在passcall语言是允许这样访问,子类继承了父类的所有成员,
//那Cat这个类也应有了name成员变量,就应该可以这样访问啊,请各位发表看法
this.fulColor=fulColor;
}