请教个 as3 继承的基本问题
//---父类----package{publicclassA{publicfunctionA(n:int){trace("A:"+n);}}}//-----子类----...
//---父类----
package {
public class A{
public function A(n:int) {
trace("A:"+n);
}
}
}
//-----子类-------
package {
public class B extends A{
public function B(n:int) {
trace("B:"+n);
}
}
}
我在实例化B类的时候报错:基底类别 A 中找不到预设的建构函式。
如果把A类的构造函数中的参数去掉就没问题
基本功不扎实,请教为什么会报错
如果我希望A类也能传参实例化该怎么做? 展开
package {
public class A{
public function A(n:int) {
trace("A:"+n);
}
}
}
//-----子类-------
package {
public class B extends A{
public function B(n:int) {
trace("B:"+n);
}
}
}
我在实例化B类的时候报错:基底类别 A 中找不到预设的建构函式。
如果把A类的构造函数中的参数去掉就没问题
基本功不扎实,请教为什么会报错
如果我希望A类也能传参实例化该怎么做? 展开
2个回答
展开全部
因为在实例化对象B时,父类A找不到构造函数(找不到与之对应的构造函数)。。。在B类中没写父类构造的方式,就默认为无参构造函数,也就相当于B在自己内部加了一条super(); 而你的A类中的没有无参构造函数,所以就报错了。你说把A中的构造方法的参数去掉,B自动调用super();刚好是无参构造方法。所以就可以了
应该写成:
//-----子类-------
package {
public class B extends A{
public function B(n:int) {
super(n);
trace("B:"+n);
}
}
}
应该写成:
//-----子类-------
package {
public class B extends A{
public function B(n:int) {
super(n);
trace("B:"+n);
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询