Aida-Hagh / C-Sharp

Learn C#
1 stars 0 forks source link

Abstract Classes #25

Open Aida-Hagh opened 5 months ago

Aida-Hagh commented 5 months ago

این کلاس‌ها نمی‌توانند مستقیماً نمونه‌سازی شوند، بلکه باید توسط کلاس‌های دیگر ارث‌بری شده و متدهای آن‌ها پیاده‌سازی شوند.کلاس‌های انتزاعی می‌توانند هم متدهای انتزاعی و هم متدهای معمولی (غیرانتزاعی) داشته باشند ولی متدهای انتزاعی نمیتوانند پیاده سازی داشته باشند بلکه باید در کلاسی که از آنها ارث بری کرده پیاده سازی شوند.

Aida-Hagh commented 5 months ago

public abstract class Shape {

// متد انتزاعی بدون پیاده‌سازی
public abstract double GetArea();

// متد غیرانتزاعی با پیاده‌سازی
public void Display()
{
    Console.WriteLine("This is a shape.");
}

}

Aida-Hagh commented 5 months ago

پیاده‌سازی کلاس‌های مشتق شده


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;
}

}

Aida-Hagh commented 5 months ago

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()}");
}

}