c# – 构造函数参数和继承

c# – 构造函数参数和继承,第1张

概述对于OOP来说是新的,我在C#中从基类继承时,派生类构造函数的工作感到困惑. 首先是基础类: class BaseClass{ private string BaseOutput = null; public BaseClass(string BaseString) { BaseOutput = BaseString; } public 对于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)

关于最后一个问题,第一个参数是什么都不做,它被传递给基类构造函数.如果你愿意,你可以使用它来做别的事情.

总结

以上是内存溢出为你收集整理的c# – 构造函数参数和继承全部内容,希望文章能够帮你解决c# – 构造函数参数和继承所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1262452.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存