MyMisPal
→ دروس Java
الدرس 8 من 9

الوراثة والواجهات

JAVA
class Employee {
    protected String name;
    protected double salary;

    Employee(String name, double salary) {
        this.name = name;
        this.salary = salary;
    }

    double monthlyCost() {
        return salary;
    }
}

class Manager extends Employee {
    private double bonus;

    Manager(String name, double salary, double bonus) {
        super(name, salary);
        this.bonus = bonus;
    }

    @Override
    double monthlyCost() {
        return salary + bonus;
    }
}

public class Main {
    public static void main(String[] args) {
        Employee[] team = { new Employee("Sara", 9500), new Manager("Khalid", 18000, 3000) };
        for (Employee e : team) {
            System.out.println(e.name + " " + e.monthlyCost());
        }
    }
}
الناتج
Sara 9500.0
Khalid 21000.0

extends تخلي Manager يرث كل شي من Employee، و@Override تعيد تعريف دالة. والمصفوفة من نوع Employee تقدر تحمل الاثنين، وكل كائن يشغّل نسخته من monthlyCost(). هذا اسمه تعدد الأشكال (polymorphism).

الواجهة (interface) عقد: تحدد الدوال اللي لازم الكلاس يوفّرها، بدون ما تقول كيف.

JAVA
interface Payable {
    double amountDue();
}

class Invoice implements Payable {
    private double total;
    Invoice(double total) { this.total = total; }
    public double amountDue() { return total * 1.15; }
}

public class Main {
    public static void main(String[] args) {
        Payable p = new Invoice(1000);
        System.out.println(p.amountDue());
    }
}
الناتج
1150.0
لقيت خطأ في هذي الصفحة، أو عندك فكرة تحسّن الموقع؟