c# – 构造函数参数和继承
发布时间:2020-12-15 04:14:18 所属栏目:百科 来源:网络整理
导读:对于OOP来说是新的,我在C#中从基类继承时,派生类构造函数的工作感到困惑. 首先是基础类: class BaseClass{ private string BaSEOutput = null; public BaseClass(string BaseString) { BaSEOutput = BaseString; } public virtual void PrintLine() { Conso
对于OOP来说是新的,我在C#中从基类继承时,派生类构造函数的工作感到困惑.
首先是基础类: class BaseClass { private string BaSEOutput = null; public BaseClass(string BaseString) { BaSEOutput = BaseString; } public virtual void PrintLine() { Console.WriteLine(BaSEOutput); } } 这是派生类: class SubClass : BaseClass { private string SubOutput = null; public SubClass(string BaseString,string SubString) : base(BaseString) { SubOutput = SubString; } public override void PrintLine() { Console.WriteLine(SubOutput); } } 最后,程序的主要部分: class Program { static void Main(string[] args) { BaseClass theBase = new BaseClass("Text for BaseClass"); SubClass theSub = new SubClass("2nd param","Text for SubClass"); theBase.PrintLine(); theSub.PrintLine(); Console.ReadKey(); } } 我没有得到的是为什么在调用派生类的构造函数时,我还必须传递基类所需的参数.如果没有赋值,派生类中的BaSEOutput字段不应该保持为null?为什么不能像这样工作: public SubClass(string SubString) : base(BaseString) 此外,当调用此派生类中的构造函数时,第一个参数必须与基类中的命名相同,否则会引发错误.如果我在派生类中定义了一个名为AnotherString的新字符串变量,为什么这不工作: public SubClass(string AnotherString,string SubString) : base(BaseString) 最后,当你这样做正确的方式并输出这个… public SubClass(string BaseString,string SubString) : base(BaseString) … SubClass构造函数中的第一个参数是什么?在派生类的任何方法中都没有被赋值或使用.为甚么要把它放在那里呢? 解决方法
至于你为什么不能做:
public SubClass(string SubString) : base(BaseString) BaseString会是什么? 你可以做: public SubClass(string SubString) : base("SomeFixedString") 要么 public SubClass(string SubString) : base(SubString) 但是,如果要将一个字符串传递给基类构造函数的参数,并且需要另外添加一个字符串,则需要接受两个参数. 至于保持相同的名字,你不会.你可以做: public SubClass(string AnotherString,string SubString) : base(AnotherString) 关于最后一个问题,第一个参数是什么都不做,它被传递给基类构造函数.如果你愿意,你可以使用它来做别的事情. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |