Helpoin selitys Abstrakti luokka ja Interface


Tämä on ehkä eniten kysytty kysymys kaikissa haastatteluissa, jotka liittyvät Ohjelmistojen kehittäminen tai ohjelmiston laadunvarmistus. Olen nähnyt kokemukseni perusteella, että usein monet meistä hämmentyvät tai unohtavat abstraktien luokkien ja rajapintojen määritelmän ja käytön. Haluan tehdä siitä helpoimman, ettei kenelläkään ole enää ongelmia sen kanssa.

Abstrakti luokka ja käyttöliittymä ovat kaksi erittäin tärkeää, kääntyy vuonna olio-Ohjelmoinnin käsite.,

aluksi selitän abstraktin luokan ja sen käytön, ja myöhemmin siirrymme rajapintoihin.

Abstrakti luokka, ei ole mitään erityistä katsomaan, kun haluat eriyttää tavallisessa luokassa. Mutta se on saanut joitakin menetelmiä, joita ei ole pantu täytäntöön, tai vain ilmoitettu, Ei määritelty. Tällöin kaikki nämä menetelmät ja itse Luokka nimetään uudelleen ”abstraktilla” avainsanalla.

abstraktissa luokassa voi olla yksi tai useita toteuttamattomia menetelmiä.,

Kuten abstrakti luokka ei ole oikea, tai ei ole ihannetapauksessa määritelty menetelmiä, verrattuna tavalliseen luokkaan niin abstrakteja luokkia ei voida instantiated, se tarkoittaa, että emme voi luoda mitään suoraa esineitä, abstrakteja luokkia.

luokat, jotka perivät/laajentavat tätä abstraktia luokkaa, joutuvat toteuttamaan / määrittelemään kaikki vanhemman abstraktin luokan abstraktit menetelmät.

Jos jokin luokka ei määrittele mitään abstrakteja menetelmiä, että luokan tulee myös abstrakti luokka.,

käyttö (kuvitteellinen tapaustutkimus):

Oletetaan, että vuonna 1995 olet suunnitellut autoluokan, jossa oli lisäominaisuus-se voisi lentää. Suunnittelit autoluokan hyvin hienosti, kaikki metodisi olivat hyvin standardoituja ja tehokkaita, mutta silloin tiesit, että carFlying () – menetelmää oli melko mahdotonta toteuttaa. Joten, pidit carFlying() menetelmä tyhjä, tai toteuttamaton (Nyt tiedät, että on abstrakti menetelmä sekä luokan!).,

tänään haluan toteuttaa sen lentävän auton, jonka olet jo suunnitellut, eikä tekniikka ole enää mahdotonta. Auto, jonka aion rakentaa, on kaikki ominaisuudet, jotka muistuttavat autoasi, ja lisäksi se voi lentää. Joten, mitä voin tehdä, on voin vain periä (”ulottuu”-Java) abstrakti luokka ja on määritellä/toteuttaa, että carFlying() abstrakti menetelmä. ole hyvä! lentävä automme on valmis rullaamaan.

Joten, kun meillä on joitakin yhteisiä piirteitä tai käyttäytymistä joukossa erilaisia esineitä, emme voi tehdä yleisen abstraktin luokan kanssa, että ominaisuus menetelmä toteutetaan., Mutta niillä esineillä voi olla erilaisia käyttäytymismalleja, silloin julistamme abstraktin menetelmän ja toteutamme ne abstraktit menetelmät eri tavalla objektin tarpeen mukaan.

esimerkki abstraktista luokasta:

jälleen kerran, Mietitäänpä esimerkkiä, joukko painijoita saa saman verran rahaa tunnissa pelaamiseen. mutta heillä on erilainen teemamusiikki ja viimeistelytaistelustrategia. Joten voimme pitää maksutavan samana kaikille ja toteuttaa sen luokassa nimeltä painija., voit julistaa themeMusic() ja viimeistelijä() menetelmiä, kuten abstrakti, koska nämä kaksi ovat toteutetaan eri tavalla eri esineitä joissakin muissa luokissa, jotka perivät meidän Painija Abstrakti luokka.

Ja the main.java:

Liitännät:

Jos sinulla on mennyt läpi ylä osa tätä opetusohjelma oikein, ymmärtää käyttöliittymä on hyvin helpompaa.

käyttöliittymä ei ole Luokka, sen oikeudenmukainen käyttöliittymä. Se on saanut joitakin menetelmiä, joissa ei ole kehon sisällä, vain menetelmän allekirjoitus (ne ovat pohjimmiltaan abstrakteja menetelmiä!,), ja voi olla joitakin lopullisia ja staattisia muuttujia. Ja, tyypillinen luokka ”toteuttaa” rajapinnat, ei ”ulottuu”.

Useita rajapintoja voidaan toteuttaa (yleensä perinnöllinen) kerrallaan.

rajapintoja perivien / toteuttavien luokkien on määriteltävä kaikki rajapinnan abstraktit menetelmät.

rajapintojen sisäiset menetelmät ovat oletusarvoisesti julkisia, mitättömiä ja abstrakteja.

käyttöliittymä on tavallaan useita perintö Java-ohjelmointikielellä.

emme voi asentaa rajapintoja liian samaan tapaan kuin abstrakteja luokkia., Koska ne ovat epätäydellisiä kokonaisuuksia, eikä niiden pitäisi antaa toteutua. Mutta joskus toimintaa, kuten instantiating voidaan soveltaa sen avulla nimetön sisäinen luokka. Se ei ole meidän asiamme tänään.

Käyttö-Liitäntä:

Liitännät säästää koodaus aikaa. Se voi sisältää joitakin staattisia ja lopullisia muuttujia, joita voidaan käyttää maailmanlaajuisesti. ja joitakin menetelmiä, jotka ovat abstrakteja ja helposti saatavilla jatkokäyttöön milloin tahansa kuka toteuttaa rajapinnan.,

Esimerkki Käyttöliittymä:

edellä esimerkki Abstraktin luokan, näimme, että yksi menetelmä oli sama kaikille, joka oli ruumis sisällä, Abstrakti luokka ja muita menetelmiä olivat abstrakteja. mutta rajapinnoissa kaikki menetelmät ovat nyt vain allekirjoituksia. Luokka StoneCold toteuttaa painijan rajapinnan ja määrittelee sen kaikki kolme abstraktia menetelmää tarpeensa mukaan.

Tällä kertaa, eri painijat saavat eri määrän rahaa per tunti. Joten, sen kätevin laittaa saman menetelmän kuin abstrakti ja määritellä se muualla mukaan objektin tarve.,

public interface Wrestler {
public abstract void paymentForWork (int hours);
public abstract void themeMusic();
public abstract void finisher();
}

ja seuraava luokka toteuttaa Painija käyttöliittymä.

pääosan osalta.java:

abstraktin luokan tai rajapinnan tapauksessa aloittavalle objektille voit pitää mielessä seuraavat,

A obj= new B();
//where A is an interface/abstract class. B is the concrete(implements/extends "A”)class which gives it’s memory to A’s obj to have access into B class and utilize its defined methods.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *