当前位置: 首页 > 编程语言 > C#

C#中的类和基类继承分享

时间:2023-04-11 02:36:33 C#

C#中的类和基类继承我在C#中有一个类,看起来像这样:公共BarStyleBarChartStyle;publicBarChart(BarDatadata,BarStylestyle){this.BarChartData=data;this.BarChartStyle=样式;}串_uniqueName;publicstringUniqueName{get{returnthis._uniqueName;}设置{this._uniqueName=value;}}字符串_rowNumber;publicstringRowNumber{get{returnthis._rowNumber;}设置{this._rowNumber=value;我想创建一个名为Chart的类,它将具有BarChart类所具有的所有属性。例如:图表someChart=newChart(BarChart);stringname=someChart.UniqueName我对C#比较陌生,继承的概念对我来说有点陌生。在一天结束时,我会有多种不同的图表类型,如LineChart、BarChart等,但我也希望能够移动它们并像这样对它们进行排序:ListgroupedCharts=listOfCharts.GroupBy(u=>u.RowNumber).Select(grp=>grp.ToList()).ToList();...所以想将它们放入一个通用的Chart类中以供LINQ使用。我应该如何设置它?创建一个抽象的Chart类:abstractclassChart{//Sharedproperties}然后继承它:classBarChart:Chart{//Barchartproperties}然后就可以创建了:ChartsomeChart=newBarChart();你需要创建一个这样的接口:publicinterfaceIChart{stringUniqueName{get;放;}stringRowNumber{得到;放;}}然后让其他类继承基类...publicclassBarChart:IChart{publicBarDataBarChartData{get;私有集;}公共BarStyleBarChartStyle{得到;私有集;}//你想要的其他自定义成员用于你糟糕的图表实现publicBarChart(BarDatadata,BarStylestyle){BarChartData=data;BarChartStyle=样式;}}此处详述了MSDN示例。就个人而言,我会避免使用抽象类,直到您确定所有可以封装的图都有真正通用的逻辑。现在没有理由过度设计,只需使用界面即可。我希望这是有帮助的!您可能不希望您的基础Chart被实例化,因为它的功能是非描述性的,因此您希望它是一个抽象类。publicabstractclassChart{//所有图表共有的公共属性publicChartDatadata;公共ChartStyle样式;公共字符串RowNumber{得到;放;}publicstringUniqueName{get;放;}//通用方法publicvoidAddDataPoint(){}//所有图表都有的方法,不同类型图表之间可能会发生变化publicvirtualvoidDrawChart(){}//构造函数publicChart(ChartDatacd,ChartStylecs){data=光盘;风格=CS;}//受保护的方法(类似于私有方法,但被继承)protectedvoidFinalize(){}}您希望继承类如下所示:publicclassBarChart:Chart{//BarChart独有属性//一个方法所有图表让BarCharts以不同方式实现publicoverridevoidDrawChart(){}//ConstructorthatcallsthebaseconstructorpublicBarChart(ChartDatacd,ChartStylecs):base(cd,cs){}}在方法上,您需要确保使用virtual和override关键字,以便子类方法可以覆盖对基类方法的调用。抽象类和接口与接口不同,抽象类允许您在其中定义方法。接口中的方法都只是签名。undefined