X


C 2005 Wprowadzenie· Składowe oznaczone słowem kluczowym private są widoczne tylko dla metod tej samej klasy...

Jak cię złapią, to znaczy, że oszukiwałeś. Jak nie, to znaczy, że posłużyłeś się odpowiednią taktyką.

138
|
Rozdział 7. Klasy i obiekty
Struktury
Chociaż struktury są typem wartościowym, to przypominają klasy, ponieważ mogą zawierać konstruktory, właściwości, metody, pola i operatory (wszystkie omówione w niniejszej książce).
Struktury wspierają też mechanizmy indeksowania (opisane w rozdziale 12.).
Z drugiej strony, struktury nie wspierają dziedziczenia, destruktorów (rozdział 11.) ani inicjali-zacji pól. Strukturę definiuje się niemal tak samo jak klasę:
[atrybuty] [modyfikator-dostępu] struct identyfikator [:lista-interfejsów]
{ składowe-struktury }
Struktury domyślnie wywodzą się z klasy Object (tak samo jak wszystkie typy w C#, łącznie z typami wbudowanymi), lecz nie mogą dziedziczyć z żadnych innych klas ani ze struktur (tak jak mogą klasy). Struktury są też domyślnie zamknięte (co znaczy, że żadna klasa ani struktura nie może po niej dziedziczyć; omówiono to w rozdziale 11.), co nie jest prawdą w przypadku klas.
Zaletą struktur miała być ich „lekkość” (wymagają mało pamięci), ale możliwości ich stosowania są tak bardzo ograniczone, a oszczędności na tyle małe, że większość programistów prawie w ogóle ich nie używa.
Uwaga programiści C++! Struktury w C++ są identyczne z klasami (z wyjątkiem dostępności), czego nie można powiedzieć o strukturach w C#.
· Składowe oznaczone słowem kluczowym protected są widoczne dla metod tej samej klasy i metod od niej pochodnych.
· Konstruktor jest specjalną metodą wywoływaną podczas tworzenia nowego obiektu. Jeśli nie zdefiniuje się żadnego konstruktora dla swojej klasy, to kompilator wywoła domyślny konstruktor, który nic nie robi. Konstruktor domyślny to taki konstruktor, który nie pobiera parametrów. Można tworzyć swoje własne konstruktory domyślne dla własnych klas.
· W czasie definiowania zmiennych składowych można je zainicjalizować określonymi wartościami.
· Słowo kluczowe this odnosi się do bieżącej instancji obiektu.
· Każda niestatyczna metoda klasy ma domyślną zmienną this, która jest jej przekazywana.
· Składowe statyczne są związane z daną klasą, a nie z konkretną instancją jej typu. Składowe statyczne są deklarowane słowem kluczowym static, a wywoływane za pośrednictwem nazwy klasy. Metody statyczne nie mogą mieć parametru this, ponieważ nie ma obiektu, na który mogłyby wskazywać.
· Klasy w języku C# nie wymagają destruktora, ponieważ obiekty niebędące w użyciu są usuwane automatycznie.
· W przypadku gdy klasa korzysta z niezarządzanych zasobów, należy wywołać metodę Dispose().
· Zmienne typu wartościowego są tworzone na stosie. Kiedy metoda kończy swoje działanie, zmienne wychodzą poza jej zasięg i są niszczone.
· Obiekty typu referencyjnego są tworzone na stercie. W momencie deklaracji instancji typu referencyjnego tworzona jest referencja odnosząca się do miejsca, w którym dany obiekt znajduje się w pamięci komputera. Jeśli referencja zostanie utworzona w obrębie metody, to po zakończeniu działania metody referencja jest usuwana. Jeśli nie ma innych referencji odnoszących się do obiektu na stercie, to mechanizm przywracania pamięci usuwa także sam obiekt.
Podsumowanie
| 139
Pytania
Pytanie 7.1. Jaka jest różnica między klasą a obiektem?
Pytanie 7.2. Gdzie tworzone są typy referencyjne?
Pytanie 7.3. Gdzie tworzone są typy wartościowe?
Pytanie 7.4. Co oznacza słowo kluczowe private?
Pytanie 7.5. Co oznacza słowo kluczowe public?
Pytanie 7.6. Jaka metoda jest wywoływana podczas tworzenia obiektu?
Pytanie 7.7. Co to jest konstruktor domyślny?
Pytanie 7.8. Jakie typy może zwrócić konstruktor?
Pytanie 7.9. W jaki sposób inicjalizuje się wartość zmiennej składowej klasy?
Pytanie 7.10. Do czego odnosi się słowo kluczowe this?
Pytanie 7.11. Jaka jest różnica między metodą statyczną a metodą obiektu?
Pytanie 7.12. Jakie jest działanie instrukcji using?
Ćwiczenia
Ćwiczenie 7.1. Napisz program z klasą Math, która ma cztery metody: Add(), Subtract(), Multiply() i Divide() (każda pobierająca dwa argumenty). W metodzie Main() program ma wywoływać wszystkie metody.
Ćwiczenie 7.2. Zmodyfikuj program z ćwiczenia 7.1 w taki sposób, aby niepotrzebne było tworzenie obiektu typu Math w celu wywoływania poszczególnych metod.
140
|
Rozdział 7. Klasy i obiekty
Wątki
Powered by wordpress | Theme: simpletex | © Jak cię złapią, to znaczy, że oszukiwałeś. Jak nie, to znaczy, że posłużyłeś się odpowiednią taktyką.

Drogi uД№ДЅytkowniku!

W trosce o komfort korzystania z naszego serwisu chcemy dostarczać Ci coraz lepsze usługi. By móc to robić prosimy, abyś wyraził zgodę na dopasowanie treści marketingowych do Twoich zachowań w serwisie. Zgoda ta pozwoli nam częściowo finansować rozwój świadczonych usług.

Pamiętaj, że dbamy o Twoją prywatność. Nie zwiększamy zakresu naszych uprawnień bez Twojej zgody. Zadbamy również o bezpieczeństwo Twoich danych. Wyrażoną zgodę możesz cofnąć w każdej chwili.

 Tak, zgadzam siГ„в„ў na nadanie mi "cookie" i korzystanie z danych przez Administratora Serwisu i jego partnerД‚Е‚w w celu dopasowania treĹ›ci do moich potrzeb. PrzeczytaĹ‚em(am) PolitykГ„в„ў prywatnoĹ›ci. Rozumiem jÄ… i akceptujГ„в„ў.

 Tak, zgadzam siГ„в„ў na przetwarzanie moich danych osobowych przez Administratora Serwisu i jego partnerД‚Е‚w w celu personalizowania wyĹ›wietlanych mi reklam i dostosowania do mnie prezentowanych treĹ›ci marketingowych. PrzeczytaĹ‚em(am) PolitykГ„в„ў prywatnoĹ›ci. Rozumiem jÄ… i akceptujГ„в„ў.

Wyrażenie powyższych zgód jest dobrowolne i możesz je w dowolnym momencie wycofać poprzez opcję: "Twoje zgody", dostępnej w prawym, dolnym rogu strony lub poprzez usunięcie "cookies" w swojej przeglądarce dla powyżej strony, z tym, że wycofanie zgody nie będzie miało wpływu na zgodność z prawem przetwarzania na podstawie zgody, przed jej wycofaniem.