Abstract Class at Interface

Anonim

Abstract Class vs. Interface

Abstract class (o uri) ay isang uri ng sa isang sistema ng uri ng nominative na ipinahayag ng programa. Kahit na ang pangalan ay nagpapahiwatig ng gayon, ang isang abstract na klase ay maaaring o hindi maaaring isama ang abstract na mga pamamaraan o mga katangian. Ang klase ng pagkakaiba ay tumutukoy sa iba't ibang mga construct ng wika na maaaring magamit upang maipatupad ang mga uri ng abstract. Ang mga abstract na klase ay maaaring characterized sa pamamagitan ng isang disenyo ng isyu na mapigil ang pinakamahusay na object oriented programming at sa pamamagitan ng kanilang mga natapos na natures.

Isang interface ay isang abstract na uri na dapat ipatupad ng mga klase upang tukuyin ang isang interface (generically pagsasalita). Ang mga interface ay maaari lamang maglaman ng mga lagda ng paraan at pare-parehong mga pahayag (parehong static at pangwakas), hindi kailanman ang mga kahulugan ng paraan. Ang mga interface ay gayahin ang maramihang mga inheritance at ginagamit upang i-encode ang mga pagkakatulad na ibinahagi sa iba't ibang uri ng klase.

Ang mga uri ng abstract ay maaaring malikha, ipinahiwatig, o kunwa sa maraming iba't ibang paraan. Ang isang programmer ay maaaring magpahiwatig ng abstract na mga uri sa pamamagitan ng paggamit ng keyword abstract malinaw, sa pamamagitan ng pagsasama ng isa o higit pang mga pamamaraan sa kahulugan ng klase, na nagmamana mula sa isa pang abstract na uri nang hindi napakalaki nawawalang mga tampok na kinakailangan upang makumpleto ang kahulugan ng klase, o sa pamamagitan ng pagpapadala ng isang partikular na pamamaraan sa object oriented programming language na kilala bilang ito na hindi ipatupad ang paraan nang direkta.

Ang mga interface ay maaaring tinukoy gamit ang abstract na mga pamamaraan. Ang mga klase ay maaari ding ipatupad sa mga interface. Kung ang isang klase ay nagpapatupad ng isang interface at hindi ipatupad ang lahat ng mga pamamaraan nito, dapat gamitin ang signifier abstract, kung hindi man ay ang signifier na ito ay hindi kinakailangan (dahil ang lahat ng mga interface ay inherently abstract). Maaari ring ipatupad ng mga klase ang maraming mga interface.

Habang ang mga interface ay ginagamit upang tukuyin ang mga pangkaraniwang interface, ang mga abstract na uri ay maaaring gamitin upang tukuyin at ipatupad ang protocol (na kung saan ay isang hanay ng mga operasyon na ang lahat ng mga bagay na ipapatupad ang nais na suporta ay dapat suportahan). Ang mga uri ng abstract ay hindi nangyayari sa mga wika na walang subtyping. Tulad ng mga subtypes ay pinilit na ipatupad ang lahat ng kinakailangang pag-andar, tinitiyak ang kawastuhan ng pagpapatupad ng programa. Mayroong ilang mga paraan kung saan maaaring makuha ang mga abstract na uri: ang mga buong klase ng abstract base ay mga klase na alinman ay malinaw na ipinahayag na abstract o naglalaman ng mga abstract (unimplemented) na mga pamamaraan; Ang mga karaniwang Lisp Object Systems ay kasama ang mga mixin na batay sa Flavors system; Java, siyempre; at Traits, na kumikilos bilang isang extension sa Smalltalk.

Buod: 1. Ang mga abstract class (o mga uri) ay nagpapahayag ng mga programa; Ang mga interface ay abstract na mga uri na dapat ipatupad ng lahat ng mga klase upang tukuyin ang kanilang interface. 2. Ang mga uri ng abstract ay maaaring maging signified gamit ang keyword nang tahasang; Ang mga interface ay likas na abstract, samakatuwid ay hindi kailangang maging signified gamit ang keyword sa lahat (maliban kung ang isang tiyak na klase nagpapatupad ng isang interface ngunit hindi ipatupad ang lahat ng mga pamamaraan nito).