73 lines
3.3 KiB
Plaintext
73 lines
3.3 KiB
Plaintext
![]() |
\b;Instrukcja \c;class\n;
|
|||
|
Pozwala na zadeklarowanie definicji klasy, przy u<>yciu nast<73>puj<75>cej sk<73>adni:
|
|||
|
\c;
|
|||
|
\s;public class NazwaKlasy
|
|||
|
\s;{
|
|||
|
\s; deklaracje;
|
|||
|
\s;}
|
|||
|
\n;
|
|||
|
Klasy mog<6F> by<62> tylko typu \l;public\u cbot\public; (publiczne), a wi<77>c mog<6F> by<62> u<>ywane podczas misji przez wszystkie roboty. Elementy klasy r<>wnie<69> s<> publiczne, dost<73>pne spoza klasy. Do klasy mog<6F> nale<6C>e<EFBFBD> pola lub funkcje (zwane r<>wnie<69> metodami), na przyk<79>ad nast<73>puj<75>ca klasa \c;MojaKlasa\n; zawiera 4 pola (a, b, x oraz s) i jedn<64> metod<6F> (MojaFunkcja).
|
|||
|
\c;
|
|||
|
\s;public class MojaKlasa
|
|||
|
\s;{
|
|||
|
\s; int a, b;
|
|||
|
\s; float x = 3.33;
|
|||
|
\s; string s = "Cze<7A><65>";
|
|||
|
\s; float MojaFunkcja( float value )
|
|||
|
\s; {
|
|||
|
\s; return (value*x)-1;
|
|||
|
\s; }
|
|||
|
\s;}
|
|||
|
\n;
|
|||
|
Jak pokazano na tym przyk<79>adzie, elementy klasy mog<6F> by<62> inicjalizowane (\c;x=3.33\n;). Mo<4D>na te<74> zdefiniowa<77> konstruktor, kt<6B>ry jest specjaln<6C> metod<6F> o nazwie takiej samej jak nazwa klasy. Metoda ta jest wywo<77>ywana automatycznie podczas tworzenia instancji klasy. Mo<4D>liwe jest r<>wnie<69> zadeklarowanie wi<77>cej ni<6E> jednej metody o tej samej nazwie ale o innych parametrach.
|
|||
|
\c;
|
|||
|
\s;public class MojaKlasa
|
|||
|
\s;{
|
|||
|
\s; int a, b;
|
|||
|
\s; void MojaKlasa( )
|
|||
|
\s; {
|
|||
|
\s; a = 2; b = 3;
|
|||
|
\s; }
|
|||
|
\s; void MojaKlasa( int a, int b )
|
|||
|
\s; {
|
|||
|
\s; this.a = a; this.b = b;
|
|||
|
\s; }
|
|||
|
\s;}
|
|||
|
\n;
|
|||
|
W tym przyk<79>adzie zadeklarowano dwa konstruktory dla klasy \c;MojaKlasa\n;, jeden bez parametr<74>w, drugi z dwoma parametrami. Jako <20>e nazwy parametr<74>w drugiego konstruktora s<> takie same jak nazwy dw<64>ch p<>l klasy \c;a\n; et \c;b\n; konieczne jest u<>ycie \c;\l;this\u cbot\this;.a\n; i \c;\l;this\u cbot\this;.b\n; w celu rozr<7A><72>nienia parametr<74>w. Inne, prostsze rozwi<77>zanie, to nadanie r<><72>nych nazw parametrom.
|
|||
|
\c;
|
|||
|
\s;void Test( )
|
|||
|
\s;{
|
|||
|
\s; MojaKlasa element1(); // konstruktor bez parametr<74>w
|
|||
|
\s; MojaKlasa element2(4, 5); // konstruktor z 2 parametrami
|
|||
|
\s; MojaKlasa element3; // konstruktor nie jest wywo<77>ywany,
|
|||
|
\s; // wi<77>c item3 == null
|
|||
|
\s;}
|
|||
|
\n;
|
|||
|
Mo<EFBFBD>na te<74> zdefinowa<77> destruktor. Musi to by<62> funkcja \c;void\n; bez parametr<74>w o takiej samej nazwie jak nazwa klasy, poprzedzona znakiem ~. Destruktor jest wywo<77>ywany automatycznie gdy nie ma ju<6A> <20>adnych odwo<77>a<EFBFBD> do instancji klasy.
|
|||
|
\c;
|
|||
|
\s;public class MojaKlasa
|
|||
|
\s;{
|
|||
|
\s; static private int licznik = 0; // licznik instancji
|
|||
|
\s; void MojaKlasa( )
|
|||
|
\s; {
|
|||
|
\s; licznik ++; // jedna instancja wi<77>cej
|
|||
|
\s; }
|
|||
|
\s; void ~MojaKlasa( )
|
|||
|
\s; {
|
|||
|
\s; licznik --; // jedna instancja mniej
|
|||
|
\s; }
|
|||
|
\s;}
|
|||
|
\s;void Test()
|
|||
|
\s;{
|
|||
|
\s; MojaKlasa element1( ); // licznik = 1
|
|||
|
\s; MojaKlasa element2( ); // licznik = 2
|
|||
|
\s; element1 = null; // licznik = 1
|
|||
|
\s;} // licznik = 0
|
|||
|
\n;
|
|||
|
W przypadku przekazywania instancji klasy jako parametru \l;funkcji\u cbot\function;, otrzymuje ona tylko \l;wska<6B>nik\u cbot\pointer; do instancji. Oznacza to, <20>e je<6A>li zostanie zmodyfikowana instancja wewn<77>trz funkcji, w rzeczywisto<74>ci zostanie zmodyfikowana instancja przekazana funkcji.
|
|||
|
|
|||
|
\t;Zobacz r<>wnie<69>
|
|||
|
\c;\l;public\u cbot\public;\n;, \c;\l;private\u cbot\private;\n;, \c;\l;static\u cbot\static;\n;, \c;\l;synchronized\u cbot\synchro;\n;, \c;\l;new\u cbot\new;\n;, \c;\l;wska<6B>nik\u cbot\pointer;\n;, \c;\l;this\u cbot\this;\n;
|
|||
|
\l;Programowanie\u cbot;, \l;typy\u cbot\type; i \l;kategorie\u cbot\category;.
|