Ero abstraktin luokan ja käyttöliittymän välillä

Abstrakti luokka vs. käyttöliittymä

Tiivistelmäluokka (tai tyyppi) on tyyppi nimetyssä tyyppisessä järjestelmässä, jonka ohjelma on ilmoittanut. Vaikka nimi viittaa siihen, abstrakti luokka voi sisältää abstrakteja menetelmiä tai ominaisuuksia tai ei. Erotusluokka viittaa erilaisiin kielirakenteisiin, joita voidaan käyttää abstraktien tyyppien toteuttamiseen. Abstraktit luokat voidaan luonnehtia suunnittelukysymykseen, joka pitää parasta olio-ohjelmointia ja heidän keskeneräisen luonteensa.

Rajapinta on abstrakti tyyppi, joka luokkien on toteutettava rajapinnan määrittelemiseksi (yleisesti ottaen). Rajapinnat voivat sisältää vain menetelmän allekirjoituksia ja vakioilmoituksia (sekä staattisia että lopullisia), eivät koskaan menetelmämääritelmiä. Rajapinnat simuloivat useita perintöjä ja niitä käytetään koodaamaan yhtäläisyyksiä, jotka on jaettu erityyppisten luokkien kesken.

Abstraktit tyypit voidaan luoda, merkitä tai simuloida useilla eri tavoilla. Ohjelmoija voi merkitä abstrakteja tyyppejä käyttämällä avainsanaa abstrakti nimenomaisesti sisällyttämällä luokan määritelmään yhden tai useamman menetelmän, perimällä toisesta abstraktista tyypistä ohittamatta luokan määritelmän suorittamiseen tarvittavia puuttuvia ominaisuuksia tai lähettämällä tietyn menetelmän oliopohjaiseen tästä tunnettu ohjelmointikieli, joka ei toteuta menetelmää suoraan.

Rajapinnat voidaan määritellä abstraktein menetelmin. Luokat voidaan toteuttaa myös rajapinnoissa. Jos luokka toteuttaa rajapinnan eikä toteuta kaikkia sen menetelmiä, on käytettävä merkitsijän abstraktia, muuten merkitsijä ei ole välttämätön (koska kaikki rajapinnat ovat luonnostaan ​​abstrakteja). Luokat voivat myös toteuttaa useita rajapintoja.

Vaikka rajapintoja käytetään yleisten rajapintojen määrittämiseen, abstrakteja tyyppejä voidaan käyttää määrittelemään ja valvomaan protokollaa (joka on joukko toimintoja, joita kaikkien halutun protokollan toteuttavien objektien on tuettava). Tiivistelmätyyppejä ei esiinny kielillä ilman alatyyppejä. Koska tällaiset alatyypit pakotetaan toteuttamaan kaikki tarvittavat toiminnot varmistaen ohjelman suorittamisen oikeellisuus. Abstraktien tyyppien luomiseksi on olemassa useita tapoja: täydelliset abstraktit perusluokat ovat luokkia, jotka joko nimenomaisesti julistetaan abstrakteiksi tai sisältävät abstrakteja (toteuttamattomia) menetelmiä; Common Lisp Object Systems sisältää sekoitukset, jotka perustuvat Flavours-järjestelmään; Java, tietysti; ja Traits, joka jatkaa Smalltalkin toimintaa.

Yhteenveto:
1. Abstraktit luokat (tai tyypit) ilmoittavat ohjelmat; rajapinnat ovat abstrakteja tyyppejä, jotka kaikkien luokkien on toteutettava rajapintojen määrittelemiseksi.
2. Abstraktit tyypit voidaan merkitä käyttämällä avainsanaa nimenomaisesti; rajapinnat ovat luonnostaan ​​abstrakteja, joten niitä ei tarvitse merkitä avainsanalla ollenkaan (paitsi jos tietty luokka toteuttaa rajapinnan, mutta ei toteuta kaikkia sen menetelmiä).