کلاس‌های انتزاعی

کلاس‌ها و متدهای abstract در جاوا: قرارداد بدون پیاده‌سازی.

abstract چیست؟

کلاسی که نمی‌توان از آن شیء ساخت — فقط نقشه پایه برای فرزندان:

public abstract class Shape {
    String name;

    // متد معمولی — پیاده‌سازی دارد
    void display() {
        System.out.println("شکل: " + name);
    }

    // متد انتزاعی — فقط امضا، بدون بدنه!
    abstract double area();
    abstract double perimeter();
}

قواعد abstract

پیاده‌سازی توسط فرزند

public class Circle extends Shape {
    double radius;

    Circle(double r) {
        name = "دایره";
        radius = r;
    }

    @Override
    double area() {
        return Math.PI * radius * radius;
    }

    @Override
    double perimeter() {
        return 2 * Math.PI * radius;
    }
}

public class Rect extends Shape {
    double w, h;

    @Override
    double area() { return w * h; }

    @Override
    double perimeter() { return 2 * (w + h); }
}

استفاده

Shape s1 = new Circle(5);    ← نوع والد، شیء فرزند
Shape s2 = new Rect(4, 6);

s1.display();
System.out.println(s1.area());   ← مساحت دایره
System.out.println(s2.area());   ← مساحت مستطیل

چه زمانی abstract؟

وضعیتراه‌حل
والد مفهومی بدون نمونه واقعی (Shape، Animal)abstract class
همه متدها فقط قراردادinterface (مبحث بعد)
فیلد + بعضی متدهای پیاده‌شدهabstract class
abstract مثل «قرارداد ناقص» است — می‌گوید هر فرزندی باید این متدها را داشته باشد، اما چگونه، به خودش مربوط است.

این مبحث بخشی از دوره آموزش کامل جاوا است.

ابزارهای مرتبط