日期:2014-05-18  浏览次数:20887 次

类继承的问题+构造函数
我定义了一个类,如果构造函数为空,那么可以有继承函数
如果构造函数有参数,那么就不能有继承函数。
为什么啊?
错误在哪里?
运行提示 不能什么0个参数的重载。

------解决方案--------------------
说起来很简单

编译器会给类一个默认的构造函数,但当你写了任何一个构造函数时,就覆盖了编译器提供的这个构造函数,所以一个良好的习惯是,即使你提供了带参数的构造函数,也要提供无参的构造函数

而子类实例对象时肯定要调用父类的构造函数,而你又没有提供父类的默认函数,就会报这样的错误了
------解决方案--------------------
楼主是这样写的代码吧
C# code

public class cls1
{
  public cls1 (int i, string s)
  {
  }
}

public class cls2 : cls1
{
  public cls2 ()
  {
  }
}

------解决方案--------------------
探讨
没有提供父类的默认函数 是什么意思?

------解决方案--------------------
简而言之,就是在写类的时候保留默认的无参构造函数。
要用有参数的可以重载。
------解决方案--------------------
引用修改下2楼的代码

public class cls1
{
public cls1()
{
}

public cls1 (int i, string s)
{
}
}

public class cls2 : cls1
{
public cls2 () : base() //在这里我添加一个"base()"调用父类无参数构造函数,这样对用构造函数的调用顺序看的应该清楚点吧
{
}
}

------解决方案--------------------
可以这样写,不过cls2 myclass2=new cls2(110,119,"火警")这句错了,cls2中第三个参数为int型!