Middle
Որ դեպքերում պետք է օգտագործել աբստրակտ դաս և որ դեպքերում ինտերֆեյս?
sobes.tech AI
Պատասխան AI-ից
Աբստրակտ դաս:
- Երբ անհրաժեշտ է ընդհանուր գործառույթի իրականացում ենթակլասների համար, բայց անհրաժեշտ է որոշ մեթոդների վերագրումներում ճկունություն:
- Երբ դասերը ունեն ընդհանուր վիճակի դաշտեր (միավոր փոփոխականներ), որոնք պետք է ժառանգվեն:
- Երբ հնարավոր է սահմանել "հարաբերություն" դասերի միջև ("այսը մի է" կամ "is-a"):
- Երբ անհրաժեշտ է տրամադրել հիմնական մեթոդների նախնական իրականացում, իսկ ենթակլասները պետք է միայն իրենց հատուկ մեթոդները իրականացնել:
Ինտերֆեյս:
- Երբ անհրաժեշտ է սահմանել վարքագծի պայմանագիր, որը կարող են իրականացնել ոչ կապված դասերը:
- Երբ դասը պետք է ունենա մի քանի տիպեր (բազմակի ժառանգություն տիպերի):
- Երբ կարևոր է ճկունությունը և հնարավորությունը ավելացնել նոր վարքագիծ առանց գոյություն ունեցող դասերի փոփոխության (նոր ինտերֆեյսի իրականացման միջոցով):
- Երբ պահանջվում է խիստ բաժանում վարքագծի սահմանման և նրա իրականացման միջև:
- Երբ անհրաժեշտ է մոդելավորել "կարող է լինել", "has-a" հարաբերությունը (համենայն դեպս, կոմպոզիցիան հաճախ նախընտրելի է "has-a" համար):
Օրինակ:
Աբստրակտ Animal դասը կարող է ունենալ ընդհանուր դաշտեր տարի, անուն և իրագործված eat() մեթոդը, բայց նաև պետք է ունենալ աբստրակտ makeSound() մեթոդը, որը պետք է իրականացնել Dog և Cat ենթակլասներում:
Flyable ինտերֆեյսը կարող է իրականացնել Bird և Airplane դասերը, որոնք այլ կերպ չեն կապված և չեն ժառանգում ընդհանուր նախնուց, բայց երկուսն էլ կարող են "թռչել"։