• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Metoda main ma dostęp do pól prywatnych w klasie której się znajduje [Java]

Object Storage Arubacloud
0 głosów
500 wizyt
pytanie zadane 16 stycznia 2016 w Java przez Mikrokontroler xD Stary wyjadacz (13,500 p.)

Witam serdecznie,

otóż zauważyłem że Eclipse czasami pozwala na operacje które nie powinny mieć miejsca
(przynajmniej moim zdaniem) i chciałbym to zweryfikować otóż mam sobie bardzo prostą klasę Main:

public class Main {
	private int liczba;

	public int getLiczba() {
		return liczba;
	}

	public void setLiczba(int liczba) {
		this.liczba = liczba;
	}
}

jak widać żadnej magii tu nie ma jednak gdy w tej klasie wywołam sobie metodę main to z jakiegoś dziwnego powodu w metodzie main mogę mieć bezpośredni dostęp do pól prywatnych KLASY Main a wygląda to tak

public class Main {
	private int liczba;

	public int getLiczba() {
		return liczba;
	}

	public void setLiczba(int liczba) {
		this.liczba = liczba;
	}

	public static void main(String[] args) {
		Main jakasLiczba = new Main();
		jakasLiczba.liczba = 2000;
		System.out.println(jakasLiczba.getLiczba());
	}
}

JVM pozwala na takie zabiegi bo w końcu main jest tylko metodą a metody danej klasy mają dostęp nawet do danych prywatnych. Zawszę myślałem że main jest trochę oderwany od tej logiki mógłby ktoś to potwierdzić lub zaprzeczyć? 

Pomijam kwestię że to prawdopodobnie jest super zła praktyka. 

3 odpowiedzi

+1 głos
odpowiedź 17 stycznia 2016 przez Grzyboo Nałogowiec (28,860 p.)
wybrane 17 stycznia 2016 przez Mikrokontroler xD
 
Najlepsza
Przecież main jest metodą jak każda inna. Metody klasy mają dostęp do prywatnych danych tej samej klasy.
komentarz 17 stycznia 2016 przez Mikrokontroler xD Stary wyjadacz (13,500 p.)
Dzięki za rozwijanie wątpliwości :)
+2 głosów
odpowiedź 17 stycznia 2016 przez Radfler VIP (101,030 p.)

No na logikę: skoro funkcja main jest składową klasy X to ma dostęp do jej wszystkich pól. Każda funkcja statyczna w klasie ma dostęp do jej pól. I tak jest to strasznie zła praktyka i trzeba na to uważać.

+1 głos
odpowiedź 17 stycznia 2016 przez mbabane Szeryf (79,280 p.)

W jednej książce znalazłem coś takiego:

Jednak dla wielu osób zaskakujące jest to, że każda metoda ma dostęp do prywatnych danych wszystkich obiektów swojej klasy.

Podobne pytania

+1 głos
2 odpowiedzi 146 wizyt
pytanie zadane 27 stycznia 2016 w Java przez ReksetoDev Gaduła (4,530 p.)
0 głosów
0 odpowiedzi 80 wizyt
0 głosów
2 odpowiedzi 248 wizyt
pytanie zadane 23 marca 2017 w C i C++ przez Konrad Nabożny Stary wyjadacz (13,460 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...