Forum » Programiranje » Java, extendanje iz dveh razredov?
Java, extendanje iz dveh razredov?
Mitja223 ::
Torej imam sledeč problem, imam razrede A, B in C.
Razred A je tisti v katerem bi to rad naredi...
Razred B je razred iz katerega morem (zaradi drugih omejitev) extendati razred A
Razred C pa je razred iz katerega bi rad dobil metode v A extends B brez, da morem te metode dejansko implementirati v razredu A, ker se mi bodo metode iz razreda C ponavljale pri več razredih in jih ne želim copy pastat X krat (in vsakič popravljati).
Kakšna ideja kako se da to izpeljati? Če sploh?
Razred A je tisti v katerem bi to rad naredi...
Razred B je razred iz katerega morem (zaradi drugih omejitev) extendati razred A
Razred C pa je razred iz katerega bi rad dobil metode v A extends B brez, da morem te metode dejansko implementirati v razredu A, ker se mi bodo metode iz razreda C ponavljale pri več razredih in jih ne želim copy pastat X krat (in vsakič popravljati).
Kakšna ideja kako se da to izpeljati? Če sploh?
Mavrik ::
Java nima t.i. multiple inheritanca, tako da ne moreš extendati več kot en sam razred.
Verjetno bi šlo če C spremeniš v interface in napišeš kodo kot t.i. default metode. Potem lahko v B implementiraš interface C in bo to delal.
Verjetno bi šlo če C spremeniš v interface in napišeš kodo kot t.i. default metode. Potem lahko v B implementiraš interface C in bo to delal.
The truth is rarely pure and never simple.
GupeM ::
Daj nariši kako bi rad kater razred extenda katerega. Ker iz napisanega bi sklepal, da pod točko 2 misliš B extends A, pod točko 3 pa ti piše A extends B. Boš pa zagotovo moral uporabiti interface in verjetno neko "default" oz. "simple" implementacijo enega razreda, s katerim boš potem čaral naprej.
amacar ::
Lahko narediš abstrakten class z implementiranimi metodami in ta class potem implementaš namesto extendaš.
Spura ::
Imas razred A, ki mora zaradi kakih method signature requirementov extendati razred B, in bi rad razred C kot mixin.
Opcije so:
- Razred C naredis kot interface, ki ima kup metod z default implementacijami. Seveda razred C potem ne more imeti instancnih variablel.
- Instanco razreda C dodas kot member variablo v razred A in po potrebi naredis delegate metode (sodoben IDE ti jih lahko generira, da se izognes pisanju). Downside tega pristopa je to, da razred A ni instanceof C, kar je lahko problem ce imas metode, ki zahtevajo da jim podas objekt razreda C.
Torej teli dve varianti imas odvisno za kaksen namen rabis imet notr v A tudi razred C.
Opcije so:
- Razred C naredis kot interface, ki ima kup metod z default implementacijami. Seveda razred C potem ne more imeti instancnih variablel.
- Instanco razreda C dodas kot member variablo v razred A in po potrebi naredis delegate metode (sodoben IDE ti jih lahko generira, da se izognes pisanju). Downside tega pristopa je to, da razred A ni instanceof C, kar je lahko problem ce imas metode, ki zahtevajo da jim podas objekt razreda C.
Torej teli dve varianti imas odvisno za kaksen namen rabis imet notr v A tudi razred C.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Sava vs Nexen vs KumhoOddelek: Na cesti | 20137 (1826) | Utk |
» | Razlika PORABE med GASTRO in gospodinjskim zamrzovalnikomOddelek: Loža | 2164 (1777) | d4vid |
» | java in deležiOddelek: Programiranje | 1163 (1010) | phyro |
» | C++ pomočOddelek: Programiranje | 960 (837) | schtr4jh |
» | Izbiramo najboljše avtomobile 2010Oddelek: Na cesti | 2414 (1680) | innerspace |