Sobes.tech
Middle

Фарқи байни синфи абстрактӣ ва интерфейс чист?

sobes.tech AI

Ҷавоб аз AI

Класи абстракт — ин класест, ки метавонад ҳам усулҳои амалишударо ва ҳам абстрактиро (бе амалишударо) дошта бошад. Он ҳамчун асос барои меросгирӣ хизмат мекунад ва метавонад ҳолат (майдонҳо) дошта бошад.

Интерфейс — шартномаест, ки маҷмӯи усулҳоро бе амалишударо муайян мекунад (дар маънои классикӣ). Класи, ки интерфейсро амалиш мекунад, бояд ҳамаи усулҳои онро амалиш кунад.

Асосӣ фарқиятҳо:

  • Класи абстракт метавонад амалишударо ва ҳолатро дошта бошад, интерфейс — танҳо имзоҳои усулҳо (дар баъзе забонҳо, интерфейсҳо метавонанд усулҳои пешфарз дошта бошанд).
  • Як класи метавонад танҳо аз як класи абстракт мерос гирад, аммо метавонад чандин интерфейсҳоро амалиш кунад.
  • Класи абстракт қисман амалишро таъмин мекунад, интерфейс — танҳо шартнома.

Масалан дар Java:

abstract class Animal {
    void eat() { System.out.println("Хӯрдан"); }
    abstract void sound();
}

interface Flyable {
    void fly();
}

class Bird extends Animal implements Flyable {
    void sound() { System.out.println("Чирик"); }
    public void fly() { System.out.println("Парвоз"); }
}