az absztrakt osztály és felület legegyszerűbb magyarázata

Ez talán a leggyakrabban feltett kérdés a szoftverfejlesztéssel vagy szoftverminőség-biztosítással kapcsolatos interjúkban. Tapasztalataimból láttam, hogy gyakran sokan összezavarodnak, vagy elfelejtik az absztrakt osztályok és interfészek meghatározását és használatát. Így, azt akarom, hogy ez a legegyszerűbb, hogy senki sem gond vele soha többé.

absztrakt osztály és interfészek két nagyon fontos pivot az objektumorientált programozási koncepcióban.,

először az absztrakt osztályt magyarázom, majd a használatot, később pedig az interfészekbe lépünk.

absztrakt osztály semmi különös, hogy nézd meg, ha azt szeretnénk, hogy különbséget a rendszeres osztály. De van néhány olyan módszer, amelyet nem hajtanak végre, vagy csak deklaráltak, nem definiáltak. Ebben az esetben ezeket a módszereket és magát az osztályt átnevezik az “absztrakt” kulcsszóval.

egy absztrakt osztálynak lehet egy vagy több számú végrehajtatlan módszere.,

mint absztrakt osztály nem megfelelő, vagy nem rendelkezik ideálisan meghatározott módszerekkel a rendes osztályhoz képest, így az absztrakt osztályokat nem lehet példányosítani, ami azt jelenti, hogy nem hozhatunk létre absztrakt osztályok közvetlen objektumait.

azoknak az osztályoknak, amelyek öröklik / kiterjesztik ezt az absztrakt osztályt, végre kell hajtaniuk/meg kell határozniuk a szülő absztrakt osztály összes absztrakt módszerét.

ha bármelyik osztály nem definiálja az absztrakt módszereket, akkor az osztály absztrakt osztálymá is válik.,

használat (egy képzeletbeli esettanulmány):

tegyük fel, hogy 1995 – ben olyan autóosztályt tervezett, amelynek további funkciója volt-repülhet. Nagyon szépen megtervezte az autóosztályt, minden módszere nagyon szabványos és hatékony volt, de akkoriban tudta, hogy teljesen lehetetlen megvalósítani a carFlying () módszert. Tehát csak a carFlying() módszert tartotta üresen, vagy nem hajtotta végre (most már tudod, hogy ez egy absztrakt módszer, valamint az osztály!).,

ma szeretném megvalósítani azt a repülő autót, amelyet már megterveztél, és a technológia már nem lehetetlen. Az autó, amit építeni fogok, minden olyan funkcióval rendelkezik, amely hasonló az autójához, ráadásul képes repülni. Szóval, mit tehetek, hogy én csak örökölni (“kiterjeszti” -Java) az absztrakt osztály meg kell határozni/végre, hogy carFlying() absztrakt módszer. tessék! a repülő autó készen áll a roll.

tehát, ha van néhány közös vonásunk vagy viselkedésünk a különböző objektumok között, általános absztrakt osztályt hozhatunk létre ezzel a funkcióval, mint megvalósított módszerrel., De ezeknek az objektumoknak eltérő viselkedésük lehet, ebben az esetben egy absztrakt módszert deklarálunk, és ezeket az absztrakt módszereket az objektum igényének megfelelően eltérő módon valósítjuk meg.

absztrakt osztály példája:

ismét Vegyünk egy példát, egy csomó birkózó óránként ugyanannyi pénzt kap a játékhoz. de van más téma zene és befejező harc stratégia. Így mindenki számára azonos módon tudjuk tartani a fizetési módot, és egy Wrestler nevű osztályban tudjuk végrehajtani., lehetővé teszi, hogy állapítsa meg a themeMusic() és finisher() módszerek absztrakt, mert ez a két kell végrehajtani másképp különböző tárgyakat más osztályok, amelyek örökli a birkózó absztrakt osztály.

és a fő.java:

interfész:

Ha a bemutató felső részén megfelelően ment keresztül, a megértési felület nagyon könnyebb lesz az Ön számára.

Az interfész Nem osztály, csak felület. Van néhány módszer, amelyben nincs test, csak a módszer aláírása (alapvetően absztrakt módszerek!,), és lehetnek végleges és statikus változók is. Egy tipikus osztály” megvalósítja “az interfészeket, nem pedig”kiterjeszti”.

Több interfész is megvalósítható (általában, örökölt) egy időben.

az interfészeket öröklő/implementáló osztályoknak meg kell határozniuk az interfész összes absztrakt módját.

az interfészeken belüli módszerek alapértelmezés szerint publikusak, érvénytelenek és elvontak.

interfész egyfajta többszörös öröklés Java programozási nyelv.

nem tudjuk instantiate interfészek is, mint absztrakt osztályok., Mert hiányos entitás, és nem szabad megengedni, hogy megvalósuljon. De néha egy olyan tevékenység, mint az instantiating, alkalmazható rá a névtelen belső osztály segítségével. Ma nem ez a napirendünk.

interfész használata:

interfészek kódolási időt takarítanak meg. Tartalmazhat néhány statikus és végleges változót, amelyek globálisan elérhetők. és néhány módszer, amely absztrakt és könnyen elérhető további használatra bármikor bárki, aki végrehajtja a felület.,

Interface példa:

az absztrakt osztály fenti példájában láttuk, hogy az egyik módszer ugyanaz volt mindenki számára, akinek teste volt az absztrakt osztályban, más módszerek pedig elvontak voltak. de az interfészek esetében az összes módszer most csak aláírás. Az osztály StoneCold implementálja a birkózó interfészt, és szükség szerint definiálja mind a három absztrakt módszert.

ezúttal a különböző birkózók különböző mennyiségű pénzt kapnak óránként. Tehát a legkényelmesebb ugyanazt a módszert alkalmazni, mint az absztrakt, és máshol definiálni az objektum igényeinek megfelelően.,

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

és a következő osztály valósítja meg a birkózó interfészt.

a fő.java:

absztrakt osztály vagy interfész esetén az objektum kezdeményezéséhez tartsa szem előtt a következőket:

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.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük