Hogyan tudok egy metódus paraméterében egy másik osztály adattagjára hivatkozni? (Java)
Adattagokat nem bántjuk osztályon kívül.
Tehát: Legyen 2 osztályunk A és B. Mind2 rendelkezik attribútumokkal és metódusokkal.
Minden attribútumnak PRIVATE vagy PROTECTED láthatóságot adunk reflexből. A PUBLIC megoldások későbbi hibákhoz is vezethetnek. Így B-ből nem láthatod az A-t KÖZVETLENÜL.
Így csinálhatsz olyat, hogy getter/setter metódusok, amik lényegében olyan metódus definiciók, amikkel az adott osztály attr. értékét tudod lekérdezni (getter) ill. beállítani (setter). Így idegenek közvetlenül nem férnek hozzá.
int valami = A.a; // fordítási hiba, mert az "a" rejtett
int valami = A.getA(); // OK. mert: public int getA() { return this.a; }
Oké. Köszi. De mi az az A?
Hogyan férjek hozzá a másik osztályhoz? Példányosítsam?
Mert most igy néz ki az enyém:
public class Postman{
public final String street;
private int lastOdd;
private int lastEven;
public Postman(String street, int lastOdd, int lastEven){
this.street = street;
this.lastOdd = lastOdd;
this.lastEven = lastEven;
}
class Municipal{
public boolean hirePostman(String street, int lastOdd, int lastEven){
street = Postman.getStreet();
lastOdd = Postman.getLastOdd();
lastEven = Postman.getLastEven();
}
}
Elősször is:
<Osztálynév>.<Metódus>() vagy <Osztálynév>.<Attr.> CSAK statikus esetben működik. Ráadást az alső osztályodban sintax error is van, mivel nincs típus definiálva, ahova te hívnád.
------------------------------------
public class Postman {
private final String street; //ez private!
private int lastOdd;
private int lastEven;
public Postman(String street, int lastOdd, int lastEven) {
this.street = street;
this.lastOdd = lastOdd;
this.lastEven = lastEven;
}
public String getStreet() {
return this.street;
}
public int getLastOdd() {
return this.lastOdd;
}
public int getlastEven() {
return this.lastEven;
}
}
class Municipal{
public static void main(String[] arg) {
Postman Pman = new Postman("Name", 10, 20);
String str = Pman.getStreet();
int odd = Pman.getLastOdd();
// stb
}
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!