Forum » Programiranje » [JAVA]Kako dostopati do privaten konstante podrazreda iz nadrazreda
[JAVA]Kako dostopati do privaten konstante podrazreda iz nadrazreda
alexa-lol ::
hej imam tako situacijo...
Kako bi dostopal do private static final X = 1; iz nadrazreda?
Je se kaksna druga moznost, kot, da naredim en objekt tega podrazreda in potem ven preberem z getter metodo
lp
Kako bi dostopal do private static final X = 1; iz nadrazreda?
Je se kaksna druga moznost, kot, da naredim en objekt tega podrazreda in potem ven preberem z getter metodo
lp
Matek ::
Če si stvar deklariral za private, je to ravno zato, da omejuješ dostop. V čem bi bil smisel workaroundov, ki jih iščeš?
Sicer pa čisto konceptualno nima smisla, da bi iz nadrazreda dostopal v podrazred. Zakaj ne definiraš konstante v prvem, če se dotika obeh?
Sicer pa čisto konceptualno nima smisla, da bi iz nadrazreda dostopal v podrazred. Zakaj ne definiraš konstante v prvem, če se dotika obeh?
Bolje ispasti glup nego iz aviona.
Zgodovina sprememb…
- spremenil: Matek ()
alexa-lol ::
zato ker je v seminarsko tako napisano
sicer to ni moja (od moje skupine) ampak od ene druge samo jih delam za vajo..
to konstanto rabim, da generiram String[] s X (X konstanta v podrazredu) elemeneti. To tabelo rabim, pri kreiranju objekta tipa, ki ga ima ta podrazred.
Moznost je, da bi kreiral tabelo kar v podrazredu, a tukaj je spet problem, ker elemente te tabele dobim, tako, da vzamem random elemente iz public static final String[], ki je pa v drugem razredu (v public razredu), tam kjer je main. Bi lahko kako iz drugega razreda dostopal do te konstantne tabele? Ker sem ze hotel narediti to, pa mi napise, da ne prepozna te tabele kljub temu, da je public in bi mogla biti dostopna v celem paketu.
sicer to ni moja (od moje skupine) ampak od ene druge samo jih delam za vajo..
to konstanto rabim, da generiram String[] s X (X konstanta v podrazredu) elemeneti. To tabelo rabim, pri kreiranju objekta tipa, ki ga ima ta podrazred.
Moznost je, da bi kreiral tabelo kar v podrazredu, a tukaj je spet problem, ker elemente te tabele dobim, tako, da vzamem random elemente iz public static final String[], ki je pa v drugem razredu (v public razredu), tam kjer je main. Bi lahko kako iz drugega razreda dostopal do te konstantne tabele? Ker sem ze hotel narediti to, pa mi napise, da ne prepozna te tabele kljub temu, da je public in bi mogla biti dostopna v celem paketu.
BlueRunner ::
Eh, to zveni kot trick question...
V nadrazredu definiraš abstraktno metodo getXXXX, ki jo morajo podrazredi implementirati. Implementacija podrazreda pa potem nadrazredu posredno vrne to konstanto preko implementacije (konkretizacije) te getXXXX metode. Čemu točno pa bi to lahko služilo, pa mi ni jasno. Še več: v tem trenutku se ne spomnem praktičnega primera, kjer bi bilo takšno prenašanje konstante uporabno...
Sicer pa zveniš čisto zmedeno... Glede na to, kar si uspel napisati, želiš narediti String[X] elementov v nadrazredu, hkrati pa praviš, da ga bi lahko naredil v podrazredu. Najprej se odloči, če je to polje lastnost enega določenega podrazreda ali pa je to polje skupno čisto vsem možnim podrazredom nadrazreda. Če prvo, potem naredi polje v podrazredu, če drugo, ga naredi v podrazredu. To je eden izmed osnovnih postulatov OOP, ki se ga brez resnično hude potrebe ne krši.
Če pa je nekje v nekem razredu definirano neko "public static final" polje, ki vsebuje neke elemente, pa to seveda pomeni, da lahko od kjerkoli in kadarkoli dostopaš do tega polja. V Javi je pač tako, da nimaš globalnih spremenljivk, ki bi obstajale same od sebe, temveč mora biti vse zajeto v razredih. Takšno javno polje pa se uporablja kot tipična globalna konstanta: z neposrednim dostopom in brez kakršnega koli ozira na dedovanje med razredi.
V nadrazredu definiraš abstraktno metodo getXXXX, ki jo morajo podrazredi implementirati. Implementacija podrazreda pa potem nadrazredu posredno vrne to konstanto preko implementacije (konkretizacije) te getXXXX metode. Čemu točno pa bi to lahko služilo, pa mi ni jasno. Še več: v tem trenutku se ne spomnem praktičnega primera, kjer bi bilo takšno prenašanje konstante uporabno...
Sicer pa zveniš čisto zmedeno... Glede na to, kar si uspel napisati, želiš narediti String[X] elementov v nadrazredu, hkrati pa praviš, da ga bi lahko naredil v podrazredu. Najprej se odloči, če je to polje lastnost enega določenega podrazreda ali pa je to polje skupno čisto vsem možnim podrazredom nadrazreda. Če prvo, potem naredi polje v podrazredu, če drugo, ga naredi v podrazredu. To je eden izmed osnovnih postulatov OOP, ki se ga brez resnično hude potrebe ne krši.
Če pa je nekje v nekem razredu definirano neko "public static final" polje, ki vsebuje neke elemente, pa to seveda pomeni, da lahko od kjerkoli in kadarkoli dostopaš do tega polja. V Javi je pač tako, da nimaš globalnih spremenljivk, ki bi obstajale same od sebe, temveč mora biti vse zajeto v razredih. Takšno javno polje pa se uporablja kot tipična globalna konstanta: z neposrednim dostopom in brez kakršnega koli ozira na dedovanje med razredi.
Zgodovina sprememb…
- spremenilo: BlueRunner ()
alexa-lol ::
Eh, to zveni kot trick question...
V nadrazredu definiraš abstraktno metodo getXXXX, ki jo morajo podrazredi implementirati. Implementacija podrazreda pa potem nadrazredu posredno vrne to konstanto preko implementacije (konkretizacije) te getXXXX metode. Čemu točno pa bi to lahko služilo, pa mi ni jasno. Še več: v tem trenutku se ne spomnem praktičnega primera, kjer bi bilo takšno prenašanje konstante uporabno...
Sicer pa zveniš čisto zmedeno... Glede na to, kar si uspel napisati, želiš narediti String[X] elementov v nadrazredu, hkrati pa praviš, da ga bi lahko naredil v podrazredu. Najprej se odloči, če je to polje lastnost enega določenega podrazreda ali pa je to polje skupno čisto vsem možnim podrazredom nadrazreda. Če prvo, potem naredi polje v podrazredu, če drugo, ga naredi v podrazredu. To je eden izmed osnovnih postulatov OOP, ki se ga brez resnično hude potrebe ne krši.
Če pa je nekje v nekem razredu definirano neko "public static final" polje, ki vsebuje neke elemente, pa to seveda pomeni, da lahko od kjerkoli in kadarkoli dostopaš do tega polja. V Javi je pač tako, da nimaš globalnih spremenljivk, ki bi obstajale same od sebe, temveč mora biti vse zajeto v razredih. Takšno javno polje pa se uporablja kot tipična globalna konstanta: z neposrednim dostopom in brez kakršnega koli ozira na dedovanje med razredi.
lahko nardimo abstrakten razred in jo kasneje definiramo ampak problem je, da ima to konstatno samo en podrazred od dveh, ce je pa metoda abstraktna jo moramo v obeh podrazredih definirati.
ok tista fora s public...
koda...
public class TestMobi{ public static final int ST_NAROCNIKOV = 10; public static final double CENA_MINUTE = .15; public static final double NAROCNINA = 20.0; public static final String[] IMENA = {"Jaka", "Ziga", "Jan", "Anja", "Mateja", "Lucija", "Rok", "Helena", "Katjusa", "Matjaz", "Marusa", "Sandra", "Eva"}; public static final String[] PRIIMKI = {"Mihajlovic", "Tomsic", "Mehle", "Javornik", "Venisnik", "Subic", "Prhaj", "Pugelj", "Bercic", "Starih Fantini", "Ljubic"}; public static final String[] STEVILKE = {"051454968", "040987452", "031258745", "051321456", "040778546", "040665325", "070654875", "051223332", "051487369", "051365412", "051448996", "040125536", "070125654"}; public static void main(String[] args){ ... } } class Klic{ ... } class Narocnik{ ... } class Prijatelj extends Narocnik{ private static final int N = 5; ... //metode utility public String[] vrniPrijatelje(){ String[] prijatelji = new String[N]; for(int i = 0; i < prijatelji.length; i++){ prijatelji[i] = STEVILKE[(int)(Math.random()*STEVILKE.length)]; } return prijatelji; } } class Mladi extends Narocnik{ ... }
vrne...
kaj bi lahko bilo narobe?
ERGY ::
Jst sicer ne poznam tega jezika, pr length nimaš () me lih zanima, če to sploh deluje tako ?
Mavrik ::
alexa:
Ja, na STEVILKE se moraš sklicevati skupaj z imenom razreda v katerem so.
Torej moreš vsepovsod napisat TestMobi.STEVILKE
ERGY:
Ja, to dela.
Ja, na STEVILKE se moraš sklicevati skupaj z imenom razreda v katerem so.
Torej moreš vsepovsod napisat TestMobi.STEVILKE
ERGY:
Ja, to dela.
The truth is rarely pure and never simple.
alexa-lol ::
it works
aja sej je logicno...cem mas npr. metode blabla() v razredu Ena, se mores na blabla() sklicevati z Ena.blabla()
aja sej je logicno...cem mas npr. metode blabla() v razredu Ena, se mores na blabla() sklicevati z Ena.blabla()
Zgodovina sprememb…
- spremenil: alexa-lol ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Java, pozicija kurzorja znotraj JPanelOddelek: Programiranje | 751 (629) | marjan_h |
» | [C++] Dedovanje, virtualne in abstraktne metodeOddelek: Programiranje | 2962 (2761) | mallard |
» | [PHP] oop in referenceOddelek: Programiranje | 1174 (904) | MrBrdo |
» | osnove v Javi - zvezdiceOddelek: Programiranje | 3537 (2759) | Tutankhamun |
» | [Java] če naredim razred generičen, dobim milijon napakOddelek: Programiranje | 1635 (1374) | MrStein |