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("Парвоз"); }
}