Open Aida-Hagh opened 5 months ago
public abstract class Shape {
// متد انتزاعی بدون پیادهسازی
public abstract double GetArea();
// متد غیرانتزاعی با پیادهسازی
public void Display()
{
Console.WriteLine("This is a shape.");
}
}
پیادهسازی کلاسهای مشتق شده
public class Circle : Shape {
private double radius;
public Circle(double radius)
{
this.radius = radius;
}
// پیادهسازی متد انتزاعی GetArea
public override double GetArea()
{
return Math.PI * radius * radius;
}
}
public class Rectangle : Shape {
private double length;
private double width;
public Rectangle(double length, double width)
{
this.length = length;
this.width = width;
}
// پیادهسازی متد انتزاعی GetArea
public override double GetArea()
{
return length * width;
}
}
class Program {
static void Main(string[] args)
{
Shape circle = new Circle(5);
Shape rectangle = new Rectangle(4, 6);
circle.Display();
Console.WriteLine($"Area of Circle: {circle.GetArea()}");
rectangle.Display();
Console.WriteLine($"Area of Rectangle: {rectangle.GetArea()}");
}
}
این کلاسها نمیتوانند مستقیماً نمونهسازی شوند، بلکه باید توسط کلاسهای دیگر ارثبری شده و متدهای آنها پیادهسازی شوند.کلاسهای انتزاعی میتوانند هم متدهای انتزاعی و هم متدهای معمولی (غیرانتزاعی) داشته باشند ولی متدهای انتزاعی نمیتوانند پیاده سازی داشته باشند بلکه باید در کلاسی که از آنها ارث بری کرده پیاده سازی شوند.