» »

[JAVA]Kako dostopati do privaten konstante podrazreda iz nadrazreda

[JAVA]Kako dostopati do privaten konstante podrazreda iz nadrazreda

alexa-lol ::

hej:D 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

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?
Bolje ispasti glup nego iz aviona.

Zgodovina sprememb…

  • spremenil: Matek ()

alexa-lol ::

zato ker je v seminarsko tako napisano :D
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.

Zgodovina sprememb…

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...
 error

error



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.
The truth is rarely pure and never simple.

alexa-lol ::

it works :D

aja sej je logicno...cem mas npr. metode blabla() v razredu Ena, se mores na blabla() sklicevati z Ena.blabla()

Zgodovina sprememb…



Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Java, pozicija kurzorja znotraj JPanel

Oddelek: Programiranje
7751 (629) marjan_h
»

[C++] Dedovanje, virtualne in abstraktne metode

Oddelek: Programiranje
152962 (2761) mallard
»

[PHP] oop in reference

Oddelek: Programiranje
151174 (904) MrBrdo
»

osnove v Javi - zvezdice

Oddelek: Programiranje
403537 (2759) Tutankhamun
»

[Java] če naredim razred generičen, dobim milijon napak

Oddelek: Programiranje
91635 (1374) MrStein

Več podobnih tem