Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
objektovo orientovaného programovania používa pojem dedičstvo rozšíriť funkčnosť objektov . Zvážte , kedy programátor vytvorí objekt , sa môžu neskôr zistí , že je potrebné vytvoriť veľmi podobný objekt , s nepatrnými rozdielmi (možno rozšíriť funkčnosť predchádzajúci objekt v novom kontexte ) . To je miesto , kde dedičnosť , poďte ďalej objekt , ktorý programátor " pochádza " z iného " základné " objekt dedia metódy a premenné tejto triedy , a potom môžete pridať ďalšie funkcie do neho ( ako v nasledujúcom príklade Java ) :
public class Sphere {
polomer public int ;
}
public class loptu rozširuje sféru {
public string farby ; //Guľový dodáva " farba " variabilné , ale tiež používa " polomer " variabilná
}
viacnásobnú dedičnosť
Na nejakom mieste , programátor môže stať pokušenia odvodiť jednu triedu z rôznych tried . Toto je známe ako " viacnásobnú dedičnosť " , a zatiaľ čo zdanlivo užitočné , môže spôsobiť problémy , ako je notoricky známy " diamantové problém . " Problém nastane , ak diamant dve triedy dedia z rovnakej triedy ( napr. triedy B a C , ktoré vyplývajú z triedy A ) , zatiaľ čo iná trieda ( D ) dedí od oboch B a C. Keď je vytvorený D objekt , systém zaobchádza ako typ základnej triedy ( class " lopta " je " gule " , napríklad ) . V probléme diamantu , systém nemôže určiť , rozhodne to , čo trieda D je ( je to typ ABD alebo zadajte ACD ? ) , Ktorý spôsobuje problémy .
Java a viacnásobné dedičnosti
Vzhľadom k problémom s viacnásobnú dedičnosť , Java neumožňuje viacnásobnú dedičnosť . Avšak , v skutočnosti vyplývajúce tried z rôznych základných tried môže byť vykonané bezpečným spôsobom prostredníctvom využitia " rozhrania " . Rozhranie je podobné triede , okrem toho , že sa iba definuje štruktúru triedy , ale nie aktuálny kód . Základná trieda , ktorá implementuje rozhranie nutne " zdediť " funkčnosť rozhranie : to len sľubuje , že využije svoje štruktúry . Pretože trieda , ktorá implementuje rozhranie nededia z inej triedy ( a to nie je typ základnej triedy ) , potom programátor môže implementovať viacero rozhraní , pomocou rovnakej triedy
Príklad : . Dedičnosť a rozhranie
Nasledujúci príklad ukazuje rozdiel medzi dedičnosti objektu a rozhrania . Dôležité je , že trieda , ktorá dedí z inej získa prístup k základnej triede , pretože v podstate sa stáva typom tejto triedy ( ako v " gule " a " Boule " tried ) . Trieda , ktorá implementuje rozhranie sľubuje iba implementovať štruktúru rozhranie : nie je to typ , že rozhranie :
rozhranie Basic {
int doubleA ( ) ; //poznámka : nie skutočný kód je definovaná v rozhraní
}
public class B implementuje Basic {
public int ;
public int doubleA ( ) //Trieda B musí definovať " doubleA ( ) " metódu implementovať " Basic "
{ return a * 2 ; }
}