– Cześć, Amigo!

– Cześć, Basiu!

– Dzisiaj opowiem Ci o klasach w Javie.

Wyjaśnienie Nr 1. Zacznę od analogii. Wszystko, co materialne, składa się z atomów. Jest wiele typów atomów: wodór, tlen, żelazo, uran... Ich kombinacja tworzy różne cząsteczki, substancje i obiekty.

– Atomy mają swoją wewnętrzną strukturę, zawierają elektrony i nukleony składające się z protonów i neutronów.

– Tak, coś tam słyszałem o strukturze atomów. Może dlatego, że jestem robotem?!

– Świat Javy jest zbudowany w podobny sposób. Programy składają się z obiektów różnego typu (klas). Z kolei klasy zawierają różne wewnętrzne struktury (zmienne i metody).

– Jeśli spojrzymy na program jako całość, jego blokami składowymi są obiekty. A klasy to typy bloków. Innymi słowy, różne typy bloków są obiektami różnych klas.

– Myślę, że rozumiem.

Wyjaśnienie Nr 2. Kiedy potrzebujemy nowego typu obiektu, tworzymy nową klasę i definiujemy sposób, w jaki jej wewnętrzny obiekt ma się zachowywać.

– To brzmi zbyt ogólnie. To znaczy, wydaje się to jasne, ale właściwie nie powiedziałeś nic konkretnego.

– W odniesieniu do struktury wewnętrznej klasa składa się z metod, które coś robią i zmiennych, które są używane przez metody do przechowywania danych.

– Nie byłoby prościej powiedzieć, że klasa to zestaw metod?

– Prawie tak jest. Uściślę to – klasa jest grupą powiązanych ze sobą metod i współdzielonych zmiennych, używanych przez te metody, by przechowywać różne wartości.

– Rozumiem. Aby utworzyć nową klasę, musimy najpierw napisać te metody...

– Tak. Musimy także zdecydować, które zmienne będą współdzielone przez różne metody. Wyciągamy te zmienne z metod i wkładamy je do klas, np. zmieniamy zmienne lokalne w zmienne (instancji) składowe.

– Zasadniczo, klasa jest tworzona w ten sposób:

1. Programista decyduje, jakich jeszcze obiektów potrzebuje.

2. Programista dzieli te obiekty na różne typy w zależności od tego, co one mają robić.

3. Programista pisze osobną klasę dla każdego typu.

4. W klasie deklaruje potrzebne metody i zmienne.

5. W każdej metodzie pisze komendy tak, aby metoda robiła to, co on chce.

6. Klasa jest gotowa. Możesz teraz utworzyć obiekty klasy.

– Super! Cóż za intrygujący schemat! Muszę go zapamiętać.

– Zdecydowanie powinieneś. Na pewno Ci się przyda. Filozofia programowania, która wymaga, aby program był podzielony na obiekty, nazywana jest programowaniem obiektowym (ang. OOP – object-oriented programming).

– Java jest klasycznym przykładem języka OOP: wszystko w niej jest obiektem.

– Studiowanie Javy sprowadza się do dwóch głównych zdań: nauki pisania własnych klas i nauki zrozumienia klas pisanych przez innych. Dzisiaj zaczniemy od tego prostszego zadania. Nauczymy się, jak pisać proste klasy i, oczywiście, jak tworzyć obiekty tych klas. Obiekty są często nazywane instancjami klas. To synonimy, oba wyrażenia są poprawne.

– Kumam.

– Podsumowując, można powiedzieć, że klasa jest mini-programem: trochę danych i funkcje, które używają tych danych do robienia czegoś. Klasy są używane do tworzenia instancji klas, znanych również jako obiekty.

– Aby utworzyć obiekt, piszemy „new nazwa_klasy()” w kodzie. Oto kilka przykładów:

Przykłady
Kot kot = new Kot();
Reader reader = new BufferedReader(new InputStreamReader(System.in));
InputStream is = new FileInputStream(path);

– Obiekt ma dwie interesujące właściwości:

Pierwsza: Każdy obiekt przechowuje swoją własną kopię zmiennych instancji. To oznacza, że jeśli zmienne instancji x i y zostały zadeklarowane w klasie oraz jeśli utworzono 10 obiektów tej klasy, to każdy obiekt będzie miał swoje własne zmienne. Zmiana zmiennych w jednym obiekcie nie wpływa na zmienne w innym obiekcie.

Druga: Podczas tworzenia obiektów możesz przekazać różne argumenty. Te wartości są używane, aby zainicjować obiekt. To trochę jak nadawanie imienia nowonarodzonemu dziecku. W wielu klasach wymagane są takie argumenty w celu utworzenia instancji (obiektów) klasy.

– Kumam. Powtórzysz jeszcze to o zmiennych instancji?

– Każdy obiekt ma swoje własne dane. To właśnie zmienne instancji.

Kod Java Wynik na ekranie:
Kot kot1 = new Kot();
kot1.imie = "Oskar";

Kot kot2 = new Kot();
kot2.imie = "Kafel";

System.out.println(kot1.imie);
System.out.println(kot2.imie);
Oskar
Kafel