Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pristupanje natklasama .....

[es] :: Java :: Pristupanje natklasama .....

[ Pregleda: 4616 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

EdmondDantes

Član broj: 51018
Poruke: 6
*.ptt.yu.



Profil

icon Pristupanje natklasama .....09.03.2005. u 19:48 - pre 231 meseci
Pozdrav.
Imam problem prilikom pristupanja natklasi neke klase, koja kao potklasu ima odredjenu klasu. Zanima me, kako se realizuje pristup natklasi iz potklase, koja je nasledjenja iz potklase natklase. Naime, klasa B je nasledjena iz klase A, a klasa C iz klase B. Problem - pristup klasi A iz klase C.
Hvala unapred !
 
Odgovor na temu

tiranin
Dorćol

Član broj: 37185
Poruke: 245
*.sbb.co.yu.



Profil

icon Re: Pristupanje natklasama .....09.03.2005. u 20:28 - pre 231 meseci
Prava pristupa se realizuju preko kljucnih reci

private
protected
public

To se odnosi kako na polja tako i na metode. Ako imas problem to je verovatno zato sto si stavio private. Ako su ti klase u istom paketu, onda ne moras nista da navedes, i to je nesto kao public u okviru istog paketa. I to vazi bez obzira na nivo nasledjivanja.
Mozes i da stavis kod ovde da se vidi sta je posredi.
 
Odgovor na temu

EdmondDantes

Član broj: 51018
Poruke: 6
*.ptt.yu.



Profil

icon Re: Pristupanje natklasama .....09.03.2005. u 21:06 - pre 231 meseci
Mozda bi "Pristupanje natklasama natklasa" bio prikladniji naziv teme. Ocigledno je doslo do nesporazuma.
Drugo, znam da je resenje stavljanja klasa u isti paket mnogo elegantije i prakticnije, ali ne i kada je u pitanju domaci zadatak =)
Dakle, pristupa se klasi A(natklase klase B) iz klase C(potklase klase B).
Hvala.
 
Odgovor na temu

tiranin
Dorćol

Član broj: 37185
Poruke: 245
*.sbb.co.yu.



Profil

icon Re: Pristupanje natklasama .....09.03.2005. u 21:39 - pre 231 meseci
Onda stavi
Code:
public ... metoda ili polje
i nema problema
 
Odgovor na temu

_owl_

Član broj: 318
Poruke: 1043
*.vdial.verat.net.



+3 Profil

icon Re: Pristupanje natklasama .....10.03.2005. u 00:24 - pre 231 meseci
Kljucna rec je: super.
Na primer:
Code:

class A {
   public void methodA() {
       System.out.println("A.methodA()");
   }
}
class B extends A {
   public void methodA() {
       super.methodA();  // obrati paznju
       System.out.println("B.methodA()");
   }
   public void methodB() {
       System.out.println("B.methodB()");
   }
}

Owl
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.decis.nl.

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Pristupanje natklasama .....10.03.2005. u 08:21 - pre 231 meseci
Citat:
Kljucna rec je: super.
Kako god okreneš, ako se klasa deklariše kako treba, moguće je pristupiti nadklasama. Neki primer šta treba da se postigne bi dobro došao.

f
 
Odgovor na temu

EdmondDantes

Član broj: 51018
Poruke: 6
*.ptt.yu.



Profil

icon Re: Pristupanje natklasama .....10.03.2005. u 13:36 - pre 231 meseci
Ovako:

class A {
public void method();
.....
.....
}
class B extends A {
.....
.....
}
class C extends B {
...
...
}

Problem - kako pristupiti metodi method() (koja je u klasi A) iz klase C (ili konstruktoru, svejedno)! Ponavljam, mogucnost postavljanja klasa u isti paket nije dopustena.
Dakle, ne govorim o pristupanju klasi A iz klase B, vec iz klase C !!
Nadam se da je sada jasnije formulisano ono sto se trazi.
 
Odgovor na temu

igyy
Igor Stojanovic
Osijek

Član broj: 43742
Poruke: 42
*.studom.stucos.hr.



+1 Profil

icon Re: Pristupanje natklasama .....10.03.2005. u 18:08 - pre 231 meseci
Jedno od rjesenja je da metodu method() u klasi A deklariras kao "static" o onda jednostavno u C klasi pozoveš metodu kao "A.method()"
" A language that doesn't affect the way you think about programming, is not worth knowing!"
 
Odgovor na temu

me-tuzalem
mensur tuzalemovic
novi pazar

Član broj: 25730
Poruke: 116
*.sbb.co.yu.



Profil

icon Re: Pristupanje natklasama .....10.03.2005. u 19:28 - pre 231 meseci
I jeste jasno i nije jasno.
O ovome se može diskutovati i iz čisto programerskog ugla, kako nešto realizovati, ali i sa projektnog ugla šta nešto znači u objektno-orijentisanom smislu.
Idem prvo na OO.
Nasleđivanje, znači da je objekat klase B podvrsta klase A, a da je objekat klase C podvrsta klase B, a samim tim i klase A. Ono što može objekat klase A, mogu i B i C, isto ili malo drugačije. Ako B i C nisu redefinisali metodu method(), onda oni bez ikakvih problema imaju i to ponašanje, a ako su redefinisali, onda oni imaju samo ponašanje definisano njihovom metodom method(), i NEMAJU ponašanje objakata kase A!
O ovome bi moglo još naširoko, ali idem na programerski ugao.
Ako za metodu staviš pravo pristupa protected tada u potklasama možeš bez problema da koristiš metodu iz natklase.
Moj ti je savet da uvek na umu imaš OO razmišljanje, jer svaki drugi pristup te može dovesti do koda koji u prvom trenutku radi, ali vrlo brzo će pokazati svoje manjkavosti kada počneš da ga održavaš.
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.ipact.nl.

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Pristupanje natklasama .....10.03.2005. u 21:02 - pre 231 meseci
java.lang.Object ima metod String toString(), koga mogu da koriste sve klase bez obzira koje su „koleno“ u nasleđivanju i bez obzira kojem paketu pripadaju. Dakle, ono što OP želi sigurno može da se uradi, jer se naveliko koristi kod ispisivanja objekata.

Međutim, da bi klase definisane u nekom paketu bile dostupne klasama u drugom paketu, moraju da budu deklarisane kao public class a ne samo kao class.

PEBKAC.
f
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
*.bos.east.verizon.net.



+6 Profil

icon Re: Pristupanje natklasama .....10.03.2005. u 21:15 - pre 231 meseci
Citat:
filmil: j
Međutim, da bi klase definisane u nekom paketu bile dostupne klasama u drugom paketu, moraju da budu deklarisane kao public class a ne samo kao class.

f


A zar ne može da se koristi refleksija da se ovo ograničenje zaobiđe?
 
Odgovor na temu

_owl_

Član broj: 318
Poruke: 1043
*.verat.net.



+3 Profil

icon Re: Pristupanje natklasama .....10.03.2005. u 22:34 - pre 231 meseci
Za nesto moze, za detalje:
Neke prljave upotrebe refleksije
Owl
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.ipact.nl.

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Pristupanje natklasama .....11.03.2005. u 00:10 - pre 231 meseci
Citat:
A zar ne može da se koristi refleksija da se ovo ograničenje zaobiđe?
Fakat. Ali na refleksiju izgleda nikada neću uspeti da se naviknem (nikad ne reci nikad...).

Ako je ovo prljava upotreba refleksije, onda je ovo čista perverzija. ;)

f
 
Odgovor na temu

StMilan

Član broj: 5061
Poruke: 144
*.ptt.yu.



Profil

icon Re: Pristupanje natklasama .....12.03.2005. u 02:27 - pre 231 meseci
Ako sam dobro shvatio šta želiš da postigneš, mislim da to nije moguće u Javi.
Sa super možeš da pozoveš samo jedan nivo redefinisanih metoda.

Ali ako imaš nešto tipa
Code:

public class A {
    public method() {
        ....
    }
}

public class B extends A {
}

public class C extends B {

     public method() {
          super.method(); // <=== ovde ce biti izvrsena metoda definisana u A
           
     }

}


Citat:
filmil: java.lang.Object ima metod String toString(), koga mogu da koriste sve klase bez obzira koje su „koleno“ u nasleđivanju i bez obzira kojem paketu

Mislim da nije to bilo pitanje. Da li neka klasa moze da pozove implementaciju toString() iz Object klase. Ne, ako je neka nadklasa vec redefinisala toString().
 
Odgovor na temu

[es] :: Java :: Pristupanje natklasama .....

[ Pregleda: 4616 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.