Աբստրակտ դաս ընդդեմ ինտերֆեյսի
Աբստրակտ դասը և ինտերֆեյսը երկու օբյեկտ կողմնորոշված կոնստրուկցիաներ են, որոնք հայտնաբերված են շատ օբյեկտ կողմնորոշված ծրագրավորման լեզուներում, ինչպիսին է Java-ն: Աբստրակտ դասը կարող է դիտվել որպես սովորական (կոնկրետ) դասի վերացական տարբերակ, մինչդեռ ինտերֆեյսը կարող է դիտարկվել որպես պայմանագրի իրականացման միջոց։ Աբստրակտ դասը դաս է, որը չի կարող սկզբնավորվել, բայց կարող է ընդլայնվել: Ինտերֆեյսը մի տեսակ է, որը պետք է իրականացվի այլ դասերի կողմից: Java-ում Abstract դասերը հայտարարվում են Abstract հիմնաբառի միջոցով, մինչդեռ միջերեսի բանալի բառն օգտագործվում է ինտերֆեյս սահմանելու համար:
Ի՞նչ է աբստրակտ դասը:
Սովորաբար, Աբստրակտ դասերը, որոնք նաև հայտնի են որպես Աբստրակտ բազային դասեր (ABC), չեն կարող ինստրուկտացվել (այդ դասի օրինակը չի կարող ստեղծվել): Այսպիսով, Աբստրակտ դասերը իմաստալից են միայն այն դեպքում, եթե ծրագրավորման լեզուն աջակցում է ժառանգությանը (դասերի ընդլայնումից ենթադասեր ստեղծելու կարողություն): Աբստրակտ դասերը սովորաբար ներկայացնում են վերացական հասկացություն կամ էություն՝ մասնակի կամ առանց իրագործման: Հետևաբար, Աբստրակտ դասերը գործում են որպես ծնող դասեր, որոնցից բխում են երեխայի դասերը, որպեսզի երեխայի դասը կիսի ծնող դասի թերի հատկանիշները, և դրանք լրացնելու համար կարող է ավելացվել ֆունկցիոնալությունը::
Աբստրակտ դասերը կարող են պարունակել Աբստրակտ մեթոդներ: Աբստրակտ դասը ընդլայնող ենթադասերը կարող են իրականացնել այս (ժառանգված) Աբստրակտ մեթոդները։ Եթե երեխա դասը իրականացնում է բոլոր նման Abstract մեթոդները, ապա դա կոնկրետ դաս է: Բայց եթե դա չլինի, ապա մանկական դասարանը նույնպես դառնում է Աբստրակտ դաս: Այս ամենը նշանակում է, որ երբ ծրագրավորողը դաս է առաջադրում որպես Abstract, նա ասում է, որ դասը թերի կլինի և այն կունենա տարրեր, որոնք պետք է լրացվեն ժառանգող ենթադասերով:Սա երկու ծրագրավորողների միջև պայմանագիր ստեղծելու լավ միջոց է, որը հեշտացնում է ծրագրային ապահովման մշակման խնդիրները: Ծրագրավորողը, ով գրում է կոդը ժառանգելու համար, պետք է ճշգրիտ հետևի մեթոդի սահմանումներին (բայց, իհարկե, կարող է ունենալ իր սեփական իրականացումը):
Ի՞նչ է ինտերֆեյսը:
Ինտերֆեյսը վերացական տեսակ է, որն օգտագործվում է պայմանագիր նշելու համար, որը պետք է իրականացվի դասերի կողմից, որոնք իրականացնում են այդ ինտերֆեյսը: Ինտերֆեյսի հիմնաբառը օգտագործվում է ինտերֆեյս սահմանելու համար, իսկ Implements հիմնաբառը՝ դասի կողմից ինտերֆեյսի իրականացման համար (Java ծրագրավորման լեզվով): Սովորաբար ինտերֆեյսը պարունակում է միայն մեթոդի ստորագրություններ և մշտական հայտարարություններ: Ցանկացած ինտերֆեյս, որն իրականացնում է որոշակի ինտերֆեյս, պետք է իրականացնի ինտերֆեյսի մեջ սահմանված բոլոր մեթոդները կամ պետք է հայտարարվի որպես վերացական դաս: Java-ում օբյեկտի հղման տեսակը կարող է սահմանվել որպես ինտերֆեյսի տեսակ: Բայց այդ օբյեկտը կամ պետք է զրոյական լինի, կամ պետք է ունենա դասի օբյեկտ, որն իրականացնում է տվյալ ինտերֆեյսը:Օգտագործելով Implements հիմնաբառը Java-ում, դուք կարող եք մի քանի ինտերֆեյսներ կիրառել մեկ դասի համար:
Ո՞րն է տարբերությունը Աբստրակտ դասի և ինտերֆեյսի միջև:
Վերացական դասերը սովորաբար ներկայացնում են վերացական հասկացություն կամ մասնակի կամ առանց իրագործման մի էություն: Մյուս կողմից, ինտերֆեյսը վերացական տեսակ է, որն օգտագործվում է պայմանագիր նշելու համար, որը պետք է իրականացվի ըստ դասերի: Աբստրակտ դասերը պետք է ժառանգվեն (կամ ընդլայնվեն), մինչդեռ միջերեսները պետք է իրականացվեն: Աբստրակտ դասերը կարող են պարունակել վերացական մեթոդներ, մինչդեռ ինտերֆեյսը պետք է պարունակի միայն վերացական մեթոդներ: Աբստրակտ դասերը կարող են պարունակել ցանկացած փոփոխական, բայց միջերեսները կարող են սահմանել միայն հաստատուններ: Դասը չի կարող ժառանգել մեկից ավելի վերացական դասերից, բայց կարող է իրականացնել մի քանի ինտերֆեյս: Ինտերֆեյսը չի կարող իրականացնել այլ ինտերֆեյս: Այնուամենայնիվ, ինտերֆեյսը կարող է ընդլայնել դասը: