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

找不到正确的方法来覆盖c#分享

时间:2023-04-10 16:08:03 C#

找不到正确的方法来覆盖c#,我将不胜感激任何帮助。错误在Triangle和Square类中,Triangle中的错误是“没有实现GeometricFigure的继承抽象成员”和“没有找到合适的方法来覆盖”,而Square只有“没有找到合适的方法来覆盖”错误。namespaceShapesDemo{classProgram{staticvoidMain(string[]args){Rectanglerec=newRectangle(8,10);Squaresqu=newSquare(11,12);三角形tri=新三角形(10,20);Console.WriteLine("计算面积为{0}"+"nn"+"计算三角形为:{1}"+"n",squ.ComputeArea(rec.Area),tri.ComputeArea(rec.Area));}}抽象类GeometricFigure{publicdecimal_height,_width,_area;publicdecimalHeight{get{return_height;}设置{_height=值;}}publicdecimalWidth{get{return_width;}设置{_width=值;}}publicdecimalArea{get{return_area;}}公共抽象十进制ComputeArea();}classRectangle:GeometricFigure{privatedecimal高度,宽度;publicRectangle(decimalsideA,decimalsideB){this.height=sideA;this.width=sideB;}publicRectangle(){}publicoverridedecimalComputeArea(){Console.WriteLine("TheAreais"+_width.ToString(),_height.ToString());返回宽度*高度;}}班级Square:Rectangle{publicSquare(decimalsideA,decimalsideB){this._width=sideA;这个._height=sideB;如果(sideA!=sideB)this._height=this._width;}publicSquare(decimalxy){this._width=xy;this._height=this._width;}publicoverridedecimalComputeArea(decimal_area){return_area=this._width*this._height;}}类Triangle:GeometricFigure{publicTriangle(intx,inty){this.Width=x;这个.Height=y;}publicoverridedecimalComputeArea(decimal_area){return_area=(this.Width*this.Height)/2;每当你覆盖一个方法时,你必须使用与基类相同的签名来覆盖(除了协变和逆变,但那些不适用于你的问题,所以我会在这里忽略它们)在GeometricFigure,你有声明publicabstractdecimalComputeArea();但在Square和Triangle中,您已声明publicoverridedecimalComputeArea(decimal_area){//...}假设其他一些类包含以下代码:GeometricFigurefig=newTriangle(10,10);小数面积=fig.ComputeArea();将调用哪个ComputeArea?Triangle没有定义一个没有参数的ComputeArea,也没有定义一个GeometricFigure,所以没有有效的ComputeArea可以调用。因此,语言规范不允许这样做,要求仅将重写放在实际重写基类方法的方法上,具有相同数量和类型的参数。由于ComputeArea(decimal)不会覆盖ComputeArea(),编译器会输出一个错误并告诉您必须将override关键字放在Triangle的ComputeArea()的定义中,并且您不能将override关键字放在ComputeArea(decimal)中。这并不是说您不能在Triangle和Square上定义ComputeArea(decimal)方法,但您不能声明它来覆盖GeometricFigureComputeArea()。在正方形和三角形类中,需要从ComputeArea()中删除方法参数,以便它与基类的签名相匹配。以上是C#学习教程:找不到合适的方式涵盖c#分享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: