Վերացական դաս ընդդեմ ժառանգության
 

Վերացական դասը և ժառանգությունը երկու կարևոր օբյեկտ են, որոնք ուղղված են Java- ի նման օբյեկտի վրա հիմնված ծրագրավորման շատ լեզուների: Վերացական դասը կարելի է համարել որպես կանոնավոր (բետոնե) դասի վերացական տարբերակ, իսկ ժառանգությունը հնարավորություն է տալիս նոր դասարաններին ընդլայնել այլ դասեր: Վերացական դասը դաս է, որը հնարավոր չէ նախաձեռնել, բայց կարող է երկարաձգվել: Ուստի, վերացական դասերը իմաստ ունեն միայն ունենալ, եթե ծրագրավորման լեզուն աջակցում է ժառանգությանը: Java- ում աբստրակտ դասերը հայտարարվում են աբստրակտ բանալի բառի միջոցով, մինչդեռ Ընդլայնված հիմնաբառ օգտագործվում է (գերծանրքաշային) դասից ժառանգելու համար:

Ի՞նչ է վերացական դասը:

Սովորաբար, վերացական դասերը, որոնք նաև հայտնի են որպես «Բազային բազայի դասեր» (ABC), չեն կարող ակնթարթորեն հայտնվել (այդ դասի օրինակ չի կարող ստեղծվել): Այսպիսով, վերացական դասերը իմաստ ունեն միայն ունենալ, եթե ծրագրավորման լեզուն աջակցում է ժառանգությանը (դասը երկարացնելուց ենթադասներ ստեղծելու ունակություն): Վերացական դասերը սովորաբար ներկայացնում են վերացական հայեցակարգ կամ սուբյեկտ, որի մասնակի կամ ոչ կատարումն է: Հետևաբար, աբստրակտ դասերը գործում են որպես ծնողական դասեր, որոնցից բխում են երեխաների դասերը, որպեսզի երեխայի դասը կիսի ծնողական դասի թերի հատկությունները, և դրանց լրացման համար կարող են ավելացվել գործառույթներ:

Վերացական դասերը կարող են պարունակել Վերացական մեթոդներ: Վերացական դասը երկարող ենթադասերը կարող են իրականացնել այս (ժառանգված) վերացական մեթոդները: Եթե ​​մանկական դասը իրականացնում է աբստրակտ այս բոլոր մեթոդները, ապա դա կոնկրետ դաս է: Բայց եթե այդպես չլինի, երեխայի դասը նույնպես դառնում է վերացական դաս: Այս ամենը նշանակում է, որ, երբ ծրագրավորողը դաս է անվանում որպես աբստրակտ, նա ասում է, որ դասը թերի կլինի, և այն կունենա տարրեր, որոնք պետք է լրացվեն ժառանգական ենթադասերով: Սա երկու տարբերակ ծրագրավորողների միջև պայմանագիր կնքելու հիանալի միջոց է, ինչը պարզեցնում է առաջադրանքները ծրագրաշարի մշակման գործում: Ծրագրավորողը, ով ծածկագիր է գրում ժառանգությանը, պետք է ճշգրիտ հետևի մեթոդի սահմանումներին (բայց, իհարկե, կարող է ունենալ իր իրականացումը):

Ի՞նչ է ժառանգությունը:

Ժառանգությունը օբյեկտի վրա հիմնված հայեցակարգ է, որը թույլ է տալիս նոր դասարաններին ընդլայնել այլ դասեր: Ընդլայնված հիմնաբառ օգտագործվում է Java ծրագրավորման լեզվով ժառանգության գաղափարը կյանքի կոչելու համար: Ժառանգությունը, ըստ էության, ապահովում է ծածկագրերի օգտագործումը `թույլ տալով նոր դասակարգված դասի միջոցով ընդլայնել առկա դասակարգի հատկությունները և վարքագիծը: Երբ նոր ենթադասը (կամ ստացված դասը) տարածում է գերծանրքաշային դասը (կամ ծնողների դասը), այդ ենթադասը ժառանգելու է գերծանրքաշային դասի բոլոր ատրիբուտներն ու մեթոդները: Ենթածրագիրը կարող է կամայականորեն գերակշռել ծնողական դասից ժառանգված վարքագիծը (տրամադրել մեթոդների նոր կամ ընդլայնված գործառույթ): Սովորաբար, ենթադասակարգը չի կարող տարածել բազմաթիվ գերծանրքաշային դասեր (օրինակ ՝ Java- ում): Հետևաբար, դուք չեք կարող օգտագործել տարածքներ բազմակի ժառանգության համար: Որպեսզի բազմակի ժառանգություն ունենալու համար հարկավոր է օգտագործել միջերեսներ:

Ո՞րն է տարբերությունը վերացական դասի և ժառանգության միջև:

Վերացական դասերը սովորաբար ներկայացնում են վերացական հայեցակարգ կամ մասնակի կամ ոչ իրականացում ունեցող անձ: Ժառանգությունը հնարավորություն է տալիս նոր դասարաններին ընդլայնել այլ դասեր: Քանի որ, վերացական դասերը հնարավոր չէ ակնթարթորեն ներարկել, դուք պետք է օգտագործեք ժառանգության հայեցակարգը, որպեսզի օգտագործեք աբստրակտ դասերը: Հակառակ դեպքում, վերացական դասը չունի օգտագործման: Վերացական դասերը կարող են պարունակել Վերացական մեթոդներ, և երբ դասը երկարաձգվում է, բոլոր մեթոդները (վերացական և բետոն) ժառանգվում են: Ժառանգած դասը կարող է իրականացնել ցանկացած կամ բոլոր մեթոդները: Եթե ​​աբստրակտ բոլոր մեթոդները չեն իրականացվում, այդ դասը դառնում է նաև վերացական դաս: Դասը չի կարող ժառանգել մեկից ավելի վերացական դասեր (սա ինքնին վերացական դասերի որակ չէ, այլ ՝ ժառանգության սահմանափակում):