Ակնարկներ

Java. Ժառանգություն, Գերմարդ և ենթադասակարգ

Java. Ժառանգություն, Գերմարդ և ենթադասակարգ



We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

Օ օբյեկտին ուղղված ծրագրավորման մեջ կարևոր հայեցակարգ ժառանգությունն է: Այն հնարավորություն է տալիս առարկաներ սահմանել միմյանց հետ փոխհարաբերությունները: Ինչպես անունն է հուշում, օբյեկտը ի վիճակի է ժառանգել բնութագրերը մեկ այլ օբյեկտից:

Ավելի կոնկրետ իմաստով ՝ օբյեկտը կարողանում է իր երեխաներին փոխանցել իր վիճակը և վարքագիծը: Որպեսզի ժառանգությունը աշխատի, օբյեկտները պետք է ունենան իրար հետ ընդհանուր բնութագրեր:

Java- ում դասերը կարելի է վերցնել այլ դասերից, որոնք կարող են վերցվել ուրիշներից և այլն: Դա այն է, որ նրանք կարող են ժառանգել առանձնահատկություններ դրա վերևի դասարանից ՝ մինչև ամենատարորական առարկայի դասը:

Java ժառանգության օրինակ

Եկեք ասենք, որ մենք ստեղծում ենք այնպիսի դաս, որը կոչվում է Մարդ, որը ներկայացնում է մեր ֆիզիկական բնութագրերը: Դա ընդհանուր դաս է, որը կարող է ներկայացնել ձեզ, ես կամ աշխարհի որևէ մեկին: Դրա վիճակը պահպանում է այնպիսի իրեր, ինչպիսիք են ոտքերի քանակը, զենքի քանակը և արյան տեսակը: Այն ունի վարվելակերպ, ինչպիսին է ուտել, քնել և քայլել:

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

Հետևաբար, ժառանգությունը մեզ թույլ է տալիս ներառել ծնողական դասի վիճակը և վարքագիծը իր երեխայի մեջ: Երեխայի դասը այնուհետև կարող է ընդլայնել վիճակը և վարքագիծը ՝ արտացոլելով իր ներկայացրած տարբերությունները: Հիշելու այս հայեցակարգի ամենակարևոր կողմն այն է, որ երեխայի դասը ծնողի ավելի մասնագիտացված տարբերակն է:

Ինչ է Superclass- ը:

Երկու առարկաների փոխհարաբերություններում սուպերմարկետ է այն դասին, որը տրված է ժառանգությունից: Այն հնչում է որպես գերծանրքաշային դուպերի դաս, բայց հիշեք, որ դա ավելի շատ ընդհանուր տարբերակ է: Օգտագործման ավելի լավ անունները կարող են լինել բազային դասարան կամ պարզապես ծնողների դաս:

Այս անգամ ավելի իրական օրինակ վերցնելու համար մենք կարող ենք ունենալ մի սուպերմարկետ, որը կոչվում է Person: Դրա վիճակը կրում է անձի անունը, հասցեն, հասակը և քաշը, և վարվում է այնպիսի վարքագիծ, ինչպիսին է գնումներ կատարելը, մահճակալը սարքել և հեռուստացույց դիտել:

Մենք կարող ենք ստեղծել երկու նոր դաս, որոնք ժառանգում են «Ուսանող և աշխատող» անձից: Դրանք ավելի մասնագիտացված վարկածներ են, քանի որ չնայած նրանք ունեն անուններ, հասցեներ, հեռուստացույց դիտելու և գնումներ կատարելու, նրանք նաև ունեն առանձնահատկություններ, որոնք տարբերվում են միմյանցից:

Աշխատողը կարող է ունենալ պետություն, որն ունի աշխատանքային վերնագիր և զբաղվածության տեղ, մինչդեռ Ուսանողը կարող է տվյալներ ունենալ ուսման ոլորտի և ուսումնական հաստատության վերաբերյալ:

Superclass- ի օրինակ.

Պատկերացրեք, դուք սահմանում եք Անհատական ​​դաս.

հասարակական կարգի անձ {}

Այս դասը երկարաձգելով ՝ կարող է ստեղծվել նոր դաս.

հանրային կարգի աշխատողը երկարացնում է անձը {}

Ասում են, որ Person դասը հանդիսանում է «Աշխատակիցների» դասի սուպերմարկետ:

Ինչ է ենթադասը:

Երկու առարկաների միջև փոխհարաբերության մեջ ենթադասակարգը դասակարգին տրված անունն է, որը ժառանգում է սուպերկլաստից: Չնայած դա մի քիչ drabber է հնչում, հիշեք, որ դա supererclass- ի ավելի մասնագիտացված տարբերակ է:

Նախորդ օրինակում ՝ Ուսանողն ու Աշխատողը ենթադասներն են:

Ենթածրագրերը կարող են հայտնի լինել նաև որպես ստացված դասարաններ, երեխաների դասեր կամ ընդլայնված դասարաններ:

Քանի ենթադասեր կարող եմ ունենալ:

Դուք կարող եք ունենալ այնքան շատ ենթադասեր, որքան ցանկանում եք: Սահմանափակում չկա այն մասին, թե որքան ենթադասեր կարող են ունենալ սուպերմարկետը: Նմանապես, ժառանգության մակարդակների քանակի սահմանափակում չկա: Դասերի հիերարխիան կարելի է կառուցել ընդհանրությունների որոշակի տարածքի վրա:

Փաստորեն, եթե նայեք Java API գրադարաններին, կտեսնեք ժառանգության շատ օրինակներ: API- ի յուրաքանչյուր դաս ժառանգվում է java.lang.Object կոչվող դասից: Օրինակ, ցանկացած անգամ, երբ դուք օգտագործում եք JFrame առարկա, դուք ժառանգության երկար տողի վերջում եք.

java.lang.Object- ը երկարաձգվել է java.awt- ի կողմից: Բաղադրիչը երկարաձգվել է java.awt.Container- ի կողմից երկարաձգված java.awt.Window- ով երկարաձգված java.awt.Frame- ի կողմից երկարաձգված javax.swing.JFrame- ի կողմից

Javaավայում, երբ ենթադասակարգը ժառանգում է սուպերմարկետից, այն հայտնի է որպես «երկարացնել» սուպերմարկետը:

Կարո՞ղ է իմ ենթլլասը ժառանգել շատ գերհագեցած լուսարձակումներից:

Ո՛չ Java- ում, ենթադասը կարող է ընդլայնել միայն մեկ սուպերմարկետ:

Ինչո՞ւ օգտագործել ժառանգություն

Ժառանգությունը ծրագրավորողներին թույլ է տալիս օգտագործել իրենց արդեն գրած կոդերը: Մարդկային դասի օրինակում, արյան տիպը պահելու համար հարկավոր չէ տղամարդկանց և տղամարդկանց դասարանում ստեղծել նոր դաշտեր, քանի որ կարող ենք օգտագործել մարդկային դասից ժառանգված մեկը:

Ժառանգությունը օգտագործելու ևս մեկ առավելություն այն է, որ այն թույլ է տալիս մեզ վերաբերվել ենթադասի ՝ կարծես թե սուպերմարկետ լիներ: Օրինակ ՝ ասենք, որ մի ծրագիր ստեղծեց տղամարդու և կնոջ օբյեկտների բազմաթիվ դեպքեր: Ծրագրին գուցե անհրաժեշտ լինի բոլոր այս օբյեկտների համար անվանել քնի վարք: Քանի որ քնի պահվածքը մարդկային սուպերկլասսայի պահվածք է, մենք կարող ենք խմբավորել տղամարդու և կնոջ բոլոր առարկաները միասին և վարվել նրանց հետ, կարծես դրանք մարդկային օբյեկտներ են: