voisko joku selittää lyhyesti mitä eroa noilla on?? ja kumpaa kannattaa käyttää ennemmin?
abstrakti luokka ja rajapinta
selitystä??
31226
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Turvaa tilisi vahvistamalla puhelinnumerosi. Voit silloin palauttaa unohtuneen salasanan tekstiviestillä.
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 3
Vanhimmat
Abstrakti luokka on luokan ilmentymä, joka on myös aina jonkin toisen aliluokan ilmentymä.
Rajapinta taas on tapa koota yhteen luokkaan samankaltaisia metodeita, joilla on sama nimi. Rajapinta vain luettelee niiden nimet mutta sitä voidaan käyttää samoihin tarkoituksiin kuin tavallisiakin luokkia.
Periaatteessa abstrakti luokka on rajapinta, tai näin voidaan ajatella. Riippuu tietysti sovelluksesta, kumpaa on parempi missäkin tilanteessa käyttää.
Abstrakti luokka on, kuten nimikin sanoo, ei-konkreettinen luokka, jota ei voi instantioida, vaan sille pitää aina tehdä toteuttava luokka. Toteuttava luokka siis perii abstraktin luokan.
Tässä mielessä abstrakti luokka on vähän kuin rajapinta, mutta se voi olla myös enemmän. Sillä voi olla mm. oma konstruktori ja se voi toteuttaa metodeita ja määritellä muitakin kuin julkisia kenttiä. Se voi myös määritellä abstrakteja metodeita, jotka aliluokkien pitää toteuttaa.
Käyttöesimerkki: oletetaan että on olemassa rajapinta A, joka määrittelee joukon metodeja. Osa näistä metodeista voidaan toteuttaa universaalisti, kun taas osa metodeista vaatii esim. alustakohtaista toteutusta. Nyt voidaan luoda abstrakti luokka B, joka toteuttaa A:n universaalit metodit, mutta ei alustariippuvaisia metodeja. Koska B ei toteuta A:ta kokonaan, sitä ei voida käyttää A:n toteutuksena, eli sitä ei voida instantioida. B:stä periytetään luokat C ja D, jotka toteuttavat alustariippuvaiset koodit ja joista ajoaikaisesti valitaan oikea toteutus. Näin vältyttiin toteuttamasta universaalit metodit useampaan kertaan.
Turhan monimutkasia selityksiä tullut.
Tässä selkeä lainaus
Abstraktista luokasta ei voida sellaisenaan luoda oliota. Abstraktissa luokassa määritellään ne attribuutit ja metodit, jotka sen perivällä luokalla on ja lisäksi voidaan määritellä abstrakteja metodeja, joille ei anneta sisältöä vielä abstraktissa luokassa, mutta sen perivässä luokassa kyseinen metodi tulee olla.
Rajapinta voi sisältää vain julkisia metodeja, joita ei ole määritelty. Täten rajapintaa käyttävän luokan tulee määrittää kaikki nämä metodit. Rajapinta tarjoaa siis käyttäjälle varman tiedon siitä, mitä metodeja luokan käyttöliittymä ainakin tarjoaa
Se kumpaa kannattaa käyttää riippuu täysin mitä on tekemässä, ja väärinkäytettynä noilla vain sekoitetaan koodia, joten kannattaa miettä tarviiko noita siinä mitä on tekemässä.