Pagkakaiba sa pagitan ng Abstract Class at Interface sa Java

Anonim

Abstract Class vs Interface sa Java

Upang maunawaan ang mga pagkakaiba sa pagitan ng abstract class at ang interface sa Java, mahalaga na, una sa lahat, maunawaan ang bawat isa sa mga nakapag-iisa. Ang abstract klase sa Java ay ginagamit sa deklarasyon ng mga subclasses na may isang hanay ng mga karaniwang katangian. Ang karaniwang paggamit ng abstract class ay isang sobrang uri ng iba pang mga klase na, sa diwa, ay nagbibigay-daan ito upang mapalawak ang abstract klase. Ang isang abstract keyword ay ginagamit sa deklarasyon ng isang mahirap unawain klase. Tulad ng anumang iba pang klase, ang abstract class ay may mga patlang na naglalarawan ng mga pamamaraan at katangian na maaaring isagawa ng klase. Sa pamamagitan lamang ng deklarasyon ng isang abstract klase, ang klase ay hindi maaaring sinimulan

Ang Java interface ay maaaring equated sa isang protocol. Ito ay kumakatawan sa isang preset at napagkasunduang pag-uugali na nagpapahintulot para sa pagpapaandar ng pakikipag-ugnayan ng mga bagay na hindi nauugnay. Depende sa user, hinahawakan ng interface ang susi sa iba't ibang mga pagkilos na ipinatupad. Ang interface, samakatuwid, ay nagsisilbi bilang isang ugnayan sa pagitan ng producer at ng mamimili. Ang mga interface sa Java ay, sa gayon, isang pangkat ng mga pamamaraan na naglalaman ng mga walang laman na katawan na maaaring may mga palaging pahayag. Sa paglalantad ng isang klase sa interface ng Java, nangangahulugang ang pag-uugali na inaasahan ng klase ay ang pagpapatupad ng lahat ng mga paraan ng interface.

Mga pagkakaiba

Una, ang isang abstract na klase ay nagbibigay-daan para sa mga patlang na hindi static o panghuling kumpara sa static at pangwakas na mga patlang na ginagamit sa mga interface. Ang mga interface ay hindi maaaring magkaroon ng anumang pagpapatupad code na ginagamit sa mga ito, at maaaring may pagpapatupad code na ginagamit sa abstract klase. Ang mga code ng Pagpapatupad na pinalabas sa abstract class ay maaaring magkaroon ng ilang o lahat ng naipatupad na mga pamamaraan. Bilang default, ang lahat ng mga paraan ng interface ay "abstract."

Posible rin ang visibility para sa mga pamamaraan o mga miyembro ng isang abstract class na maaaring mag-iba tulad ng pampubliko, protektado, pribado, o wala. Ang pagpapakita ng interface, sa kabilang banda, ay maaari lamang maitakda sa isang mode ng visibility na "pampubliko.""

Isang abstract na klase ay awtomatikong magmana sa klase ng object. Sa katunayan, ito ay nangangahulugan na ang mga paraan tulad ng clone () at katumbas () ay kasama. Sa isang interface, posible ang walang mana ng klase ng bagay. Kasunod nito, ang abstract class ay may kakayahan ng pagkakaroon ng isang tagapagbuo, ngunit ang isang interface ay hindi maaaring magkaroon ng isa.

Ang interface sa Java ay mayroon ding isang napakahalagang function na may pagpapatupad ng maramihang mga inheritance dahil ang isang klase ay maaari lamang magkaroon ng isang sobrang klase. Bagaman isa lamang ang sobrang klase, maaaring ipatupad sa anumang bilang ng mga interface. Ito ay hindi posible na magkaroon ng maramihang mga inheritance sa isang mahirap unawain klase.

Sa pagganap, ang mga interface ay malamang na maging mas mabagal sa pagpapatupad kumpara sa abstract klase pangunahin dahil sa sobrang direksyon ng paghahanap ng kaukulang pamamaraan sa isang klase. Gayunpaman, ang pagkakaiba ay naging mas mabagal dahil sa modernong Java virtual machine na patuloy na na-upgrade.

Ang pagdagdag ng isang paraan sa isang interface ay nangangailangan sa iyo upang masubaybayan ang lahat ng mga klase ng pagpapatupad na nagpapatupad ng partikular na interface. Bilang kahalili, maaari mong pahabain ang interface upang payagan itong magkaroon ng mga dagdag na pamamaraan. Kung nangyayari ka sa pagharap sa isang abstract na klase, ang lahat ng kinakailangan ay upang idagdag ang default na pagpapatupad ng paraan at patuloy na gumagana ang code. Yamang ang mga pagkakaiba ay umiiral sa pagitan ng mga abstract na klase at mga interface, mahalagang tandaan na hindi sila mga karibal, ngunit ang mga pagkakaiba na binanggit dito ay nagsisilbi upang umakma sa isa't isa.

Buod

  1. Ang mga patlang ng abstract klase ay hindi static o panghuling kumpara sa interface na may static at huling mga talahanayan.

  2. Walang magagamit na code sa pagpapatupad sa mga interface habang maaaring magamit sa abstract class.

  3. Ang pagpapakita ng interface ay maaari lamang maging pampubliko habang ang abstract class visibility ay maaaring mag-iba.

  4. Ang isang abstract class ay awtomatikong magmana sa klase ng bagay, ngunit hindi posible sa interface.

  5. Ang abstract class ay mas mabilis kaysa sa interface sa pagpapatupad.