Վերացական դասը շատ նման է ինտերֆեյսի, բայց հայեցակարգը մի փոքր շփոթեցնող է OOP- ի սկսնակների համար: Ceptանկալիորեն, վերացական դասը նման է պարզապես ինտերֆեյսի, իհարկե, առանց որևէ իրականացման, սակայն նրանք ունեն իրենց արդար բաժինը տարբերությունների մեջ: Թեև վերացական դասը կարող է մասամբ կամ ամբողջությամբ իրականացվել, ինտերֆեյսը պետք է իրականացվի ամբողջությամբ: Դե, երկուսի միջև առավել ուշագրավ տարբերությունն այն է, որ վերացական դասը կարող է ունենալ լռելյայն իրականացում, իսկ ինտերֆեյսը պարզապես մեթոդների սահմանումն է, որը պարունակում է միայն անդամ հայտարարագրեր: Եկեք մանրամասն քննարկենք երկուսի տեսական կողմերը:

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

Վերացական դասը դասի հատուկ տեսակ է, որը հանդես է գալիս որպես այլ դասերի հիմք և չի կարող ակնթարթային լինել: Վերացական դասի իրականացման տրամաբանությունը տրամադրվում է դրա ստացված դասերի կողմից: Դասակարգը վերացական դարձնելու համար օգտագործվում է «վերացական» ձևափոխիչը, ինչը նշանակում է, որ դրա արդյունքում բխող դասում պետք է իրականացվի անհայտ կորածների իրականացում: Այն պարունակում է ինչպես վերացական, այնպես էլ ոչ վերացական անդամներ: Վերացական դասը նախատեսում է ապահովել հիմնական գործառույթ, որը կարող է հետագայում տարածվել և շրջանցվել բազմաթիվ ստացված դասերի միջոցով: Օգտակար է խուսափել ցանկացած տեսակի կոդ կրկնությունից: Նրանք շատ նման են ինտերֆեյսներին, բայց ավելացված ֆունկցիոնալությամբ:

Աբստրակտ դասի և միջերեսի միջև տարբերությունը C #- ում:

Ինչ է ինտերֆեյսը:

Ինտերֆեյսը, մյուս կողմից, դաս չէ, որը պարունակում է միայն ֆունկցիոնալության ստորագրությունը: Դա օրինաչափություն է, որի իրականացումը չկա: Հայեցակարգային իմաստով, դա պարզապես մեթոդների սահմանում է, որը պարունակում է միայն անդամների հռչակագիր: Դա դատարկ կեղև է, որը չի պարունակում իր անդամների իրականացում: Դա նման է բազային վերացական դասի, որը պարունակում է միայն վերացական անդամներ, ինչպիսիք են մեթոդները, իրադարձությունները, ցուցիչները, հատկությունները և այլն: Այն ուղղակիորեն հնարավոր չէ ակնթարթորեն ներարկել, և դրա անդամները կարող են իրականացվել ցանկացած դասի կողմից: Բացի այդ, բազմակի ինտերֆեյսերը կարող են իրականացվել դասի կողմից, այնուամենայնիվ, դասը կարող է ժառանգել միայն մեկ դաս:

Վերացական դաս ընդդեմ ինտերֆեյսի. Տարբերությունը աբստրակտ դասի և միջերեսի միջև C #


  1. Բազմակի ժառանգություն - A դասը կարող է օգտագործել միայն մեկ վերացական դաս, հետևաբար բազմակի ժառանգությունը չի ապահովվում: Ինտերֆեյսը, մյուս կողմից, կարող է աջակցել բազմակի ժառանգությանը, ինչը նշանակում է, որ դասը կարող է ժառանգել ցանկացած թվով ժառանգություն:
    Աբստրակտ դասի և ինտերֆեյսի սահմանում C # - աբստրակտ դասը դասի հատուկ տեսակ է, որը կարող է պարունակել սահմանում `առանց կատարման: Իրականացման տրամաբանությունը տրամադրվում է դրա ստացված դասերով: Այն կարող է ունենալ ինչպես վերացական, այնպես էլ ոչ վերացական մեթոդներ: Մյուս կողմից, ինտերֆեյսը պարզապես մի օրինաչափություն է, որը ոչինչ անել չի կարող: Տեխնիկապես, դա պարզապես դատարկ shell է:
    Իրականացում - վերացական դասը կարող է պարունակել ինչպես սահմանում, այնպես էլ դրա կիրառում: Դա թերի դաս է, որը հնարավոր չէ ակնթարթորեն ներարկել: Ինտերֆեյսը կարող է ունենալ միայն գործառույթի ստորագրությունը, առանց որևէ կոդի:
    Մուտքի փոփոխիչներ. Վերացական դասը կարող է ունենալ մի քանի մուտքի փոփոխողներ ՝ ենթահող, գործառույթներ, հատկություններ և այլն, մինչդեռ ինտերֆեյսը չի թույլատրվում ունենալ մուտքի ձևափոխիչներ, և բոլոր մեթոդները պետք է ենթադրաբար սահմանվեն որպես հանրային:
    Միատարրություն - վերացական դասը օգտագործվում է նույն տիպի, վարքի և կարգավիճակի իրականացման համար, իսկ ինտերֆեյսը օգտագործվում է այն մեթոդների համար, որոնք կիսում են միայն մեթոդի ստորագրությունները:
    Հայտարարություն - վերացական դասը հանդես է գալիս որպես հիմնական դաս բոլոր մյուս դասարանների համար, այնպես որ այն կարող է հայտարարել կամ օգտագործել ցանկացած փոփոխական, մինչդեռ ինտերֆեյսը չի թույլատրվում որևէ փոփոխական հայտարարել:
    Կոնստրուկտորի հռչակագիր - Մինչ վերացական դասը կարող է ունենալ կոնստրուկտորների հռչակագիր, ինտերֆեյսը չի կարող ունենալ կոնստրուկտորների հռչակագիր:
    Core ընդդեմ ծայրամասային - աբստրակտ դասը օգտագործվում է դասի հիմնական ինքնությունը որոշելու համար և կարող է օգտագործվել նույն տվյալների տիպի օբյեկտների համար: Մի միջերես, մյուս կողմից, օգտագործվում է դասի ծայրամասային ունակությունը որոշելու համար:
    Խստություն ընդդեմ հավելվածի - աբստրակտ դասը գործունակության առումով առավել բարդ է, գոնե մշակողի տեսանկյունից, մինչդեռ ինտերֆեյսը ավելի կոշտ է:

Վերացական դաս ընդդեմ միջերեսի. Աղյուսակի ձև

Ամփոփում

Ո՞րն է տարբերությունը վերացական դասի և ինտերֆեյսի միջև: Սա, հավանաբար, ամենատարածված հարցերից մեկն է, որը տրված է ցանկացած տեխնիկական հարցազրույցում: Դուք, ամենայն հավանականությամբ, կարող եք գտնել ցանկացած աբստրակտ դասընթացի վերաբերյալ վերացական դասերի և միջերեսների վերաբերյալ տեղեկատվության մեծ քանակություն, այնուամենայնիվ, երկուսի միջև եղած տարբերությունը հասկանալը բավականին կոշտ մասն է: Դուք կարող եք համախմբել այն բոլոր տեղեկությունները, որոնք կարող եք գտնել, և դեռևս չեն կարող բավարար քանակություն ստանալ: Դե, հասկացորեն երկուսն էլ ծրագրավորման մեջ ամենակարևոր տերմիններն են և միանգամայն նույնն են, սակայն ֆունկցիոնալ առումով դրանք շատ տարբեր են: Թեև վերացական դասը դասի հատուկ տեսակ է, որը հիմք է հանդիսանում այլ դասերի համար, մյուս կողմից `ինտերֆեյսը պարզապես դատարկ կեղև է, որի անդամները միայն հայտարարություններ ունեն:

Հղումներ

  • Ազատություն, essեսսին: Սովորել C #: Սեբաստոպոլ. O’Reilly Media, 2002. տպ
  • Ազատություն, essեսսին: Սովորել C #: Սեբաստոպոլ. O’Reilly Media, 2002. տպ
  • Լավին, Պիտեր: Օբեկտիվ կողմնորոշված ​​PHP` հասկացություններ, մեթոդներ և ծածկագիր: Սան Ֆրանցիսկո. Ոչ օսլա մամուլ, 2006. Տպել
  • Stellman, Andrew and Jennifer Greene. Գլուխ առաջին C #: Kolkata: Shroff Publisers & Distributors, 2008. Տպել
  • "Պատկերային վարկ. Https://stackoverflow.com/questions/2570814/when-to-use-ab Abstract-classes"