Kezdőoldal » Számítástechnika » Programozás » JAVA-ban ezt hogy lehet...

JAVA-ban ezt hogy lehet megoldani?

Figyelt kérdés

Illusztrációnak:


public class Test{

private int a;

public Test(){a = 0;}

public Test(int a) {this.a = a;

public set(int a){this.a = a;}

}


public class Test2 extends Test{

public Test2(){super(0);}

...

}


És azt szeretném elérni, hogy a programban egy Test2 objektumra ne lehessen meghívni az ősosztály metódusait csak közvetetten, a Test2 definícióján belül.

Tehát ha pl a Test2-ben nincs set() művelet, akkor a feltéve hogy t2 olyan típusú objektum, a t2.set(3); hibát dobjon.

Viszont az ősosztályt is lehessen használni.



2016. okt. 29. 15:26
 1/5 anonim ***** válasza:
Erre való a protected módosító (public helyett).
2016. okt. 29. 15:27
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:
tehát egy csomagban vannak, jelen esetben a defaultban, és a Main class is ebben a névtelen csomagban van, akkor tudom használni az összes osztályt és az említett metódushívás hibát eredményezne?
2016. okt. 29. 15:29
 3/5 A kérdező kommentje:
természetesen a set előtt egy void van
2016. okt. 29. 15:35
 4/5 anonim ***** válasza:

Tehát, ha jól értem.

Van egy Test osztályod, ennek a metódusait publikusan hívhatónak akarod.

És van egy Test2 osztályod, amit leszármaztatsz a Test osztályodból, de nem akarod használni, csak azokat a metódusokat, amiket a Test2-ben külön definiálsz.


Ilyet tudtommal nem tudsz megcsinálni Java-ban, sőt, igazából sehol nem tudod megcsinálni. A legközelebbi, ami eszembejut, az a C++, ahol lehetőséged van protected vagy private származtatással levezetni a származtatott osztályt, de ekkor az ősosztály ÖSSZES public és protected metódusa protected/private lesz a származtatott osztályban. Igazából fel is vetül a kérdés: Miért akarsz származtatni egy ősosztályból, ha nem akarsz semmilyen metódust közvetlen abból elérhetővé tenni a származtatott osztályban?

2016. okt. 29. 20:17
Hasznos számodra ez a válasz?
 5/5 A kérdező kommentje:

C++ működik a dolog, csak Java-ban is meg szerettem volna valósítani. Igazából csak gyakorlásképp csinátam egy láncolt listát és ehhez egy leszármazott osztályt, vermet.


Ott tök jól működik, míg a láncolt listába bárhova lehet beszúrni elemeket, előre, hátra, adott indexre, addig a verembe csak előre, ami nevezetesen az ősosztály popFront() metódusát hívja meg, törölni is csak az elsőt lehet.


Javaban is szerettem volna ezt megcsinálni, de akkor lehet sajnos ezt itt nem lehet. Míg C++ ott van, hogy

class XY public/private/protected XYZ, addig Javaban, csak az extends kulcsszó.


Java nyelvet csak nemrég kezdtem el tanulgatni pár hete és sok helyzetben bizonytalan vagyok még, hogy hogyan lehet, hogyan kellene, lehet-e egyáltalán olyat csinálni.

2016. okt. 29. 21:10

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!