Разлика између апстрактне класе и наследства

Сажетак Класа вс Наслеђивање

Сажетак класе и наслеђивање су два важна објектно оријентисана концепта која се налазе у многим објектно програмским језицима као што је Јава. Апстрактни разред се може сматрати апстрактном верзијом регуларне (конкретне) класе, док наслеђивање омогућава да се новим класама прошире друге класе. Сажетак класе је класа која се не може иницијализирати, али се може проширити. Дакле, апстрактне часове имају смисла имати само ако програмски језик подржава наследство. У Јави се класе Сажетак декларишу помоћу кључне речи Сажетак, док се кључна реч Ектендс користи за наследство од (супер) класе.

Шта је апстрактна класа?

Обично се класе апстракта, познате и као апстрактне основне класе (АБЦ), не могу инстанцирати (инстанца те класе се не може креирати). Дакле, апстрактне класе имају смисла имати само ако програмски језик подржава наследство (способност креирања поткласа продужењем класе). Апстрактне часове обично представљају апстрактни концепт или ентитет с делимичном или никаквом имплементацијом. Због тога, сажеци наставе делују као матичне класе из којих потичу дечије класе тако да дечија класа дели непотпуне карактеристике родитељске класе и може се додати функционалност да их доврши.

Сажеци могу садржавати апстрактне методе. Подкласе које проширују апстрактну класу могу имплементирати ове (наслеђене) Абстрактне методе. Ако дечија класа примењује све такве апстрактне методе, то је конкретан разред. Али ако то не успе, дечија класа такође постаје апстрактна класа. Све ово значи да, када програмер номинира класу као Сажетак, она каже да ће класа бити непотпуна и да ће имати елементе које је потребно попунити наследним подкласама. Ово је леп начин за склапање уговора између два програмера, који поједностављује задатке у развоју софтвера. Програмер, који пише код да га наследи, мора тачно да следи дефиниције метода (али наравно може имати и сопствену имплементацију).

Шта је наслеђивање?

Насљеђивање је концепт оријентиран на објекте који омогућава новим класама да проширују и друге класе. Кључна реч Ектендс користи се за имплементацију концепта наслеђивања у програмском језику Јава. Наслеђивање у основи омогућава поновну употребу кода омогућавајући проширење својстава и понашања постојеће класе од стране нове дефинисане класе. Када нови подразред (или изведена класа) прошири супер класу (или надређену класу), подразред ће наследити све атрибуте и методе супер класе. Подкласа може опционално надјачати понашање (пружити нове или проширене функционалности методама) наслеђено од родитељске класе. Подкласа обично не може проширити више супер класа (нпр. На Јави). Стога наставке не можете користити за вишеструко наслеђивање. Да бисте имали више насљеђивања, морате да користите интерфејсе.

Која је разлика између класе апстракције и наследства?

Апстрактне часове обично представљају апстрактни концепт или ентитет са делимичном или никаквом имплементацијом. Наслеђивање омогућава да се новим класама прошире друге класе. Будући да апстрактне часове не могу да се примене, за коришћење апстрактних часова морате користити концепт наследства. У супротном, класа Сажетак нема користи. Апстрактне часове могу садржавати апстрактне методе и када се класа продужи, све се методе (Сажетак и конкретност) наслеђују. Наслијеђена класа може имплементирати било коју или све методе. Ако се не примене све апстрактне методе, тада та класа такође постаје апстрактна класа. Класа не може наслиједити више класа сажетака (ово није квалитет сажетака, већ ограничење насљеђивања).