J'ai essayé quelques petites choses pour corriger l'erreur et je n'arrive pas à comprendre cela, j'apprécierais grandement toute aide. L'erreur est dans les classes Triangle et Square, les erreurs dans Triangle sont "n'implémente pas le membre abstrait hérité de GeometricFigure" et "aucune méthode appropriée trouvée pour redéfinir" et Square n'a que l'erreur "pas de méthode appropriée pour remplacer".aucune méthode appropriée trouvée pour remplacer C#
namespace ShapesDemo
{
class Program
{
static void Main(string[] args)
{
Rectangle rec = new Rectangle(8,10);
Square squ = new Square(11, 12);
Triangle tri = new Triangle(10, 20);
Console.WriteLine("Computed area is {0}" + "\n\n" + "Computed Triangle is: {1}" + "\n", squ.ComputeArea(rec.Area), tri.ComputeArea(rec.Area));
}
}
abstract class GeometricFigure
{
public decimal _height, _width, _area;
public decimal Height
{
get { return _height; }
set { _height = value; }
}
public decimal Width
{
get { return _width; }
set { _width = value; }
}
public decimal Area
{
get { return _area; }
}
public abstract decimal ComputeArea();
}
class Rectangle : GeometricFigure
{
private decimal height, width;
public Rectangle(decimal sideA, decimal sideB)
{
this.height = sideA;
this.width = sideB;
}
public Rectangle()
{
}
public override decimal ComputeArea()
{
Console.WriteLine("The Area is" + _width.ToString(), _height.ToString());
return width * height;
}
}
class Square : Rectangle
{
public Square(decimal sideA, decimal sideB)
{
this._width = sideA;
this._height = sideB;
if (sideA != sideB)
this._height = this._width;
}
public Square(decimal xy)
{
this._width = xy;
this._height = this._width;
}
public override decimal ComputeArea(decimal _area)
{ return _area = this._width * this._height; }
}
class Triangle : GeometricFigure
{
public Triangle(int x, int y)
{
this.Width = x;
this.Height = y;
}
public override decimal ComputeArea(decimal _area)
{ return _area = (this.Width * this.Height)/2; }
}
}
Il vaut la peine de souligner que la suppression du paramètre comme le disent les réponses résoudra votre problème, * et de plus, si cela fonctionne comme vous l'avez actuellement, cela ne fonctionnera pas comme prévu. * _area n'a pas besoin d'être re-déclaré votre paramètre de méthode car il est déjà un champ de classe. Ce que vous avez en ce moment est d'assigner à la seconde déclaration de _area dans la portée de la fonction qui ne fait rien puisqu'elle ne fait rien dans le champ de classe, mais à la déclaration de _area dans la méthode. –