System.out.print() - jak rozumieć operator kropki (początkujący)

0

Cześć, znam podstawy C++, zamierzam również poznać Javę. Lubie znać szczegóły już na początku, aby mieć dokładny obraz tego co się dzieje w danej chwili (i żeby umieć przeczytać kod, a nie tylko wiedzieć co robi). W języku C++ operator kropki odnosi się do metody, która jest wywoływana na rzecz obiektu (ewentualnie do pól struktury). Gdy mamy dwie kropki, np.

obiekt.metoda().metoda();

oznacza to, że na rzecz obiektu "obiekt", wywołana jest "metoda()", która zwraca coś i na rzecz nowo zwróconego obiektu wywołuje metodę "metoda()".
Jak to wygląda w Javie? Czym jest System i czym jest out? W C++, aby odnieść się do klasy stosuje się operator zakresu "::". Zazwyczaj w kursach mówią, że to tak i tak działa, ale nie piszą dlaczego. Mogę prosić o szczegóły?

3

oznacza to, że na rzecz obiektu "obiekt", wywołana jest "metoda()", która zwraca coś i na rzecz nowo zwróconego obiektu wywołuje metodę "metoda()".

W dużym uproszczeniu tak. Idąc trochę głębiej też tak, ale w szczegółach zależy to od widoczności i modyfikatorów metody. Metody prywatne są wywoływane trochę „inaczej” niż publiczne.

System.out.print() – tutaj sprawa jest prosta, jak zrozumiesz, czym są pola i metody statyczne. W Javie pola i metody statyczne nie są wywoływane na rzecz konkretnego obiektu, a na rzecz klasy (pod spodem oznacza to, że wywołanie jest na rzecz obiektu typu Class, który reprezentuje klasę). Zatem zapis System.out oznacza – weź pole statyczne out z klasy System i następnie println() oznacza wywołanie metody na tym obiekcie.

Co do zasady . w Javie może być rozumiana tak samo jak :: w Cpp.

2
haracz napisał(a):

Cześć, znam podstawy C++, zamierzam również poznać Javę.
W C++, aby odnieść się do klasy stosuje się operator zakresu "::".

Podejrzewam, że w C++ przeceniasz ilość pól i metod statycznych. W realnym OBIEKTOWYM kodzie jest używane znacznie rzadziej, na rzecz . czy ->

Podwójny dwukropek ma tam dwa/trzy znaczenia:

  • wydobycie klasy/(czegoś innego bo nie tylko obiekty) z przestrzeni nazw
  • separator pomiędzy nazwą klasy a metodą przy jej implementacji
  • jest konieczny do wyłuskania metody/pola statycznego klasy

Będzie ciężko z tylko "wzrokowym" oswojeniem się "przez ramię", bez wartościowego materiału pisanego. Trzy znaczenia dwukropków albo pięć znaczeń kroki by chciały mieć precyzyjną nazwę, czym są w konkretnym kontekście

1 użytkowników online, w tym zalogowanych: 0, gości: 1