Witam!
O ile dobrze cię zrozumiałem to chcesz mieć wpływ na pola prywatne w jednej klasie z klasy drugiej.
Po pierwsze w gwoli wyjaśnienia. Pole to a właściwość to dwie różne zmienne. Chociaż można stosować zamiennie, ale należy się
trzymać konwencji jaka istnieje. Pola są zwykle prywatne, a właściwości publiczne i posiadają akcesory get i set.
pole
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
właściwość
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Powoli przejdźmy do meritum sprawy. Aby mieć dostęp do pól z jednej klasy w drugiej przy zachowaniu hermetyzacji
należy skorzystać z interfejsu. Co to takiego? generalnie jest to kontrakt, a klasa która impelmentuje interfejs musi go wypełnić
czyli jeśli posiadamy w interfejsie jakieś pola, właściwości, metody to należy je zaimplementować. Takie są warunki kontraktu.
A teraz bez tego miszmaszu. Stworzyłem dwie klasy i interfejs - KlasaPierwsza, KlasaDruga, i interfejs IPrzekazywanie
KlasaPierwsza
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
jak widać nie ma tutaj nic do umówienia. Konstruktor klasy przyjmuje parametr typu I przekazywanie w głównym programie będzie widać o co chodzi
Interfejs
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
widzimy, że posiada 3 pola które nie posiadają modyfikatorów dostępu, a dlaczego tak jest to sobie doczytaj.
KlasaDruga
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
W KlasieDrugiej mamy pola prywatne do których nie mamy dostępu nigdzie indzie - private
Zaimplementowaliśmy interfejs IPrzekazywanie. Widać to po dwukropku po nazwie klasy.
Gółówny program
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Tworzymy obiekt k2 klasy drugiej i do jej właściwości przypisujemy dane. Co automatycznie wypełnia nam pola prywatne w tej klasie (są one tutaj w sumie zbędne ale ich tez będzie można zmienić jeśli inna klasa będzie implementowała interfejs IPrzekazywanie).
Następnie tworzony jest obiekt klasy pierwszej i tam jak wstawimy breakpointa zobaczymy ze mamy dane które ustawiliśmy dla właściwości w obiekcie drugim.

I to wszystko.