Hirdetés

Keresés

Új hozzászólás Aktív témák

  • fatal`
    titán

    Sziasztok!

    Egy kérdés merült fel bennem interfészekkel kapcsolatban.
    Tehát interfész definíciója: (teljesség hiányával)
    "Minden operáció impliciten absztrakt"
    ->tehát csak az adott fgv. feje van az interfészben, tehát csak definiálva van

    Az implicit szót nem véletlen emeltem ki az előbb.
    Azt is tudjuk, hogy az interfész az egy speciális absztrakt osztály.
    Absztrakt osztály definíciója, többek közt:
    Egy osztály absztrakt osztály, ha legalább egy absztrakt metódust tartalmaz.

    Egy absztrakt osztály tartalmazhat olyan absztrakt függvényt, amelynek van implementációja abban az adott absztrakt osztályban.

    És itt jönne a kérdésem:
    Impliciten absztraktnak nevezzük az előbb említett interfészben levő operációt, míg explicitnek nevezzük az utóbb említett absztrakt osztályban levő absztrakt függvényt amelynek van implementációja?

    A kérdésemmel arra szeretnék rávilágítani, hogy helyesen mondtam-e az explicit és az implicit közötti különbséget.

    Illetve lenne még vmi.
    Az interfész osztály és az absztrakt osztály közötti különbségek.
    E kettő dolog között a különbség "szinte" csak az abstract és az interface kulcsszavak.
    Mi még köztük a különbség? Melyiket érdemes használni?

    "Mi még köztük a különbség? Melyiket érdemes használni?"
    Származtatáskor van különbség. Ha nincs szükséged semmilyen függvény implementációjára (értsd, olyan abstract osztályod lenne, amiben csak abstract függvények vannak), akkor érdemes interfacet használni, mert interfaceből egy osztály bármennyit implementálhat, viszont származtatni csak egy osztályból lehet.

  • Peter Kiss
    őstag

    Sziasztok!

    Egy kérdés merült fel bennem interfészekkel kapcsolatban.
    Tehát interfész definíciója: (teljesség hiányával)
    "Minden operáció impliciten absztrakt"
    ->tehát csak az adott fgv. feje van az interfészben, tehát csak definiálva van

    Az implicit szót nem véletlen emeltem ki az előbb.
    Azt is tudjuk, hogy az interfész az egy speciális absztrakt osztály.
    Absztrakt osztály definíciója, többek közt:
    Egy osztály absztrakt osztály, ha legalább egy absztrakt metódust tartalmaz.

    Egy absztrakt osztály tartalmazhat olyan absztrakt függvényt, amelynek van implementációja abban az adott absztrakt osztályban.

    És itt jönne a kérdésem:
    Impliciten absztraktnak nevezzük az előbb említett interfészben levő operációt, míg explicitnek nevezzük az utóbb említett absztrakt osztályban levő absztrakt függvényt amelynek van implementációja?

    A kérdésemmel arra szeretnék rávilágítani, hogy helyesen mondtam-e az explicit és az implicit közötti különbséget.

    Illetve lenne még vmi.
    Az interfész osztály és az absztrakt osztály közötti különbségek.
    E kettő dolog között a különbség "szinte" csak az abstract és az interface kulcsszavak.
    Mi még köztük a különbség? Melyiket érdemes használni?

    Abstract osztályt lehet verziózni (beépíthető plusz metódus default implementációval), míg egy interface-t nem.

  • TBG
    senior tag

    Sziasztok!

    Egy kérdés merült fel bennem interfészekkel kapcsolatban.
    Tehát interfész definíciója: (teljesség hiányával)
    "Minden operáció impliciten absztrakt"
    ->tehát csak az adott fgv. feje van az interfészben, tehát csak definiálva van

    Az implicit szót nem véletlen emeltem ki az előbb.
    Azt is tudjuk, hogy az interfész az egy speciális absztrakt osztály.
    Absztrakt osztály definíciója, többek közt:
    Egy osztály absztrakt osztály, ha legalább egy absztrakt metódust tartalmaz.

    Egy absztrakt osztály tartalmazhat olyan absztrakt függvényt, amelynek van implementációja abban az adott absztrakt osztályban.

    És itt jönne a kérdésem:
    Impliciten absztraktnak nevezzük az előbb említett interfészben levő operációt, míg explicitnek nevezzük az utóbb említett absztrakt osztályban levő absztrakt függvényt amelynek van implementációja?

    A kérdésemmel arra szeretnék rávilágítani, hogy helyesen mondtam-e az explicit és az implicit közötti különbséget.

    Illetve lenne még vmi.
    Az interfész osztály és az absztrakt osztály közötti különbségek.
    E kettő dolog között a különbség "szinte" csak az abstract és az interface kulcsszavak.
    Mi még köztük a különbség? Melyiket érdemes használni?

    Az interfész osztály és az absztrakt osztály közötti különbségek.
    E kettő dolog között a különbség "szinte" csak az abstract és az interface kulcsszavak.
    Mi még köztük a különbség? Melyiket érdemes használni?

    Azért ez nem így van. Az interfész gyakorlatilag csak meghatároz megvalósítandó metódusokat.
    Ezzel szemben az absztrakt osztályban lehetnek absztrakt metódusok, amiket meg kell valósítani az örökösnek, DE lehetnek benne nem absztrakt metódusok is, amik valami konkrétumot csinálnak.

    Persze ezt lehet variálni, amikor egy absztrakt osztály megvalósít egy interfészt, de az implementációk absztraktok lesznek.....így azokat az örökösben kell implementálni...és ott már gyakorlatilag nem látszik, hogy az eredetileg az absztrakt osztály absztrakt metódusait valósítom meg vagy az absztrakt osztály által implementált interfész metódusait :)

    És melyiket érdemes? Erre nincs egységes recept. Általánosságban elmondható, hogy ha többszörös öröklődést akarsz megvalósítani(ami Javában alapból nincs), akkor interfész, de ha tuti, hogy csak egy őst akarsz, de kellenek default metódusok is, akkor absztrakt. Perszem azt is lehet, hogy

    Interface-->default class implements interface-->örökös

    vagy

    absztrakt class-->örökös

    vagy

    Interface->absztrakt class absztrakt metódusok-->örökös

    szóval...a lehetőségek végtelen tárháza :)

  • MrSealRD
    veterán

    Sziasztok!

    Egy kérdés merült fel bennem interfészekkel kapcsolatban.
    Tehát interfész definíciója: (teljesség hiányával)
    "Minden operáció impliciten absztrakt"
    ->tehát csak az adott fgv. feje van az interfészben, tehát csak definiálva van

    Az implicit szót nem véletlen emeltem ki az előbb.
    Azt is tudjuk, hogy az interfész az egy speciális absztrakt osztály.
    Absztrakt osztály definíciója, többek közt:
    Egy osztály absztrakt osztály, ha legalább egy absztrakt metódust tartalmaz.

    Egy absztrakt osztály tartalmazhat olyan absztrakt függvényt, amelynek van implementációja abban az adott absztrakt osztályban.

    És itt jönne a kérdésem:
    Impliciten absztraktnak nevezzük az előbb említett interfészben levő operációt, míg explicitnek nevezzük az utóbb említett absztrakt osztályban levő absztrakt függvényt amelynek van implementációja?

    A kérdésemmel arra szeretnék rávilágítani, hogy helyesen mondtam-e az explicit és az implicit közötti különbséget.

    Illetve lenne még vmi.
    Az interfész osztály és az absztrakt osztály közötti különbségek.
    E kettő dolog között a különbség "szinte" csak az abstract és az interface kulcsszavak.
    Mi még köztük a különbség? Melyiket érdemes használni?

    Majd ezt még kiegészítik páran...mert amit írok kevés de egy alapvető dolog:
    Interfészből bármennyit implementálhat egy osztály.
    DE egy osztály csak egyetlen őssel rendelkezhet.
    Ezért el kell dönteni a tervezési fázisban, hogy egy adott dolog esetén melyiket kell használni...

Új hozzászólás Aktív témák

Hirdetés