5600235291

5600235291



Rozwiązanie to jednak nie uchroni nas przed ponownym zapomnieniem nadania wartości odpowiednim polom obiektu.

Bardziej uniwersalnym rozwiązaniem jest wykorzystanie mechanizmów programowania obiektowego—zastosowanie specjalnych metod nazywanych konstruktorami. Konstruk-tory wykonywane są w momencie generowania obiektów i dlatego idealnie nadają się do inicjalizowania wartości pól.

Jak definiuje się konstruktory?

Konstruktory są funkcjami o nazwach zgodnych z nazwami klas, w których dane konstruktory się definiuje. (Ta informacja dotyczy Javy i np. C++. W języku Pascal, konstruktory mogą mieć dowolne inne nazwy). Konstruktory nie zwracają żadnych wartości. Nie deklaruje się nawet typu void.

Powróćmy do przykładu z prostokątem. Stosując powyższe wytyczne, konstruktor tej klasy może wyglądać następująco:

Prostokąt(int wys, int szer)

{

wysokosc = wys; szerokość = szer;

>

Zobaczmy jak zareaguje kompilator na dodanie takiego konstruktora do klasy: j avac Prostokąt.j ava

Prostokąt.java:21: cannot find symbol symbol : constructor Prostokąt() location: class Prostokąt Prostokąt p = new Prostokąt();

1 error

Okazuje się, że nie można utworzyć obiektu. Problem, który za chwilę okaże się zaletą, polega na tym, że tworząc obiekt uruchamiany jest konstruktor. Który? Ten przed chwilą dodany. Ponieważ posiada on dwa argumenty musimy przekazać mu dwie wartości— parametry tworzonego prostokąta. Ale o to właśnie nam chodziło, aby nie zapomnieć o nadaniu wartości polom klasy. Wykorzystanie konstruktora wygląda zatem następująco:

Prostokąt p = new Prostokąt(7,3);

Konstruktor domyślny

Powiedzieliśmy, że konstruktor jest funkcją wołaną automatycznie w momencie tworzenia obiektu. Co jednak się dzieje, gdy w klasie nie zdefiniowano żadnego konstruktora? Podobnie jak w C-h-P, w takiej sytuacji kompilator generuje i dołącza do klasy bezargu-mentowy konstruktor domyślny umożliwiając generowanie obiektów. Jednak, w sytuacji gdy programista zdefiniuje własny konstruktor, ten domyślny nie jest generowany. Stąd pojawiły się problemy z kompilacją w przykładzie powyżej.

Zwróćmy jeszcze uwagę na syntaktykę tworzenia obiektu z wykorzystaniem konstruktora bezargumentowego:

2



Wyszukiwarka

Podobne podstrony:
48 RECENZJE się z autorem co do pewnych rozwiązań, to jednak nie umniejsza to wartości jego pracy, z
W XX w. rozparcelowano 2,6 miliona hektarów ziemi. W żaden sposób nie rozwiązało to jednak problemu
img177 (2) możemy uznał za stan normalny, to jednak nie można tego powiedzieć o samopoczuciu psychic
IMGI80 (3) na równe cząstki, ułożone na stole, dzieci inaczej rozwiązałyby to zadanie, nie trzeba by
P1090179 albo godzinę i czterdzieści minut. To jednak nie ma większego znaczenia. Zgodnie z tradycją
pic63577 WWW./NJ&fte/eO?^ Obawiam się, że to jednak NIE SĄ meduzy...
Wymaga to jednak nie tylko wiedzy o cząsteczkach i większych częściach żywych układów, ale także
pic63577 WWW./NJ&fte/eO?^ Obawiam się, że to jednak NIE SĄ meduzy...
0000007 4 nych modeli działania enzymów. Jakkolwiek wiele elementów już wyjaśniono, to jednak nie je
DSC04123 MAFIA nlr M itln^flO (M SobOl<*W*k 9<i0). to jednak nie 1952, KU Jedrn jŁOWtf 40) ido
To jednak nie symuluje poprawnie wymagania natychmiastowego uruchomienia. Pamiętajmy, że założyliśmy
TO JEDNAK NIE INTERNETNAJSKUTECZNIEJ NAMAWIA DO ZAKUPÓW ŻrtdtoiOpen Research Klient, który chce wyda
1 (298) 66 Teoria literatury dyscyplinarny charakter, mimo to jednak nie wykraczają poza akadem

więcej podobnych podstron