Java - metody
Przypatrzmy się temu przykładowi.
public class Main {
private int zmienna_1 = 0;
public Main() {
System.out.println("Konstruktor klasy Main.");
}
public static void main ( String [] args ) {
Main klasa_glowna = new Main();
klasa_glowna.metoda_1();
int zmienna = klasa_glowna.zwroc_zmienna_1();
System.out.println("Zmienna 1: " + zmienna);
klasa_glowna.ustaw_zmienna_1( 10 );
zmienna = klasa_glowna.zwroc_zmienna_1();
System.out.println("Zmienna 1 po ustawieniu: " + zmienna);
}
public void metoda_1() {
System.out.println("To jest metoda_1()");
}
public int zwroc_zmienna_1() {
return zmienna_1;
}
public void ustaw_zmienna_1( int zmienna ) {
zmienna_1 = zmienna;
}
}
Co tutaj się takiego dzieje? Na samym początku widzimy, że mamy klasę Main. No ale w niej już na samym początku widać ciekawą konstrukcję o nazwie zmienna. Czyli jest to po prostu zmienna. Ta zmienna nosi nazwę zmienna_1, jest prywatna oraz posiada typ int czyli jest zmienną typu liczby całkowite. Na samym początku już jest do niej przypisana wartość 0 czyli zmienna jest zainicjowana wartością 0. Ta zmienna to zmienna składowa klasy, jest w tej klasie zaagregowana. Uważam, że wszystkie zmienne składowe klasy powinny być prywatne. Oznacza to, że z poziomu klasy nie ma do nich bezpośredniego dostępu, ale może być pośredni np. poprzez metodę. Jest to zjawisko tzw. enkapsulacji czyli oddzielenia szczegółów implementacji od jej ogółu poprzez interfejs klasy. No to mamy właśnie tą zmienną.
Dalej idąc mamy public Main() { ... }. Co to oznacza? Jest to tzw. konstruktor. Konstruktor to pewna instrukcja
która wywoływana jest wraz z utworzeniem obiektu. No jak tu utworzymy obiekt klasy Main to wyświetli nam się
napis "Konstruktor klasy Main". W konstruktorze możemy używać zmiennych składowych klasy, zmiennych
lokalnych konstruktora, metod, obiektów. I dalej mamy już metodę main(). W niej pierwsze wywołanie jest takie:
Main klasa_glowna = new Main();. To teraz tak, ogólnie możemy takimi szablonami zapisać jak tworzyć właśnie
obiekty, bo to jest utworzenie obiektu.
Jak istnieje konstruktor no to też i destruktor, ale destruktora jawnie nie musimy już tworzyć, ponieważ jest on już utworzony niejawnie. Destruktor czyści pamięć kiedy np. już nie używamy danego obiektu i jest on uruchamiany automatycznie. Dalej mamy takie wywołanie: "klasa_glowna.metoda_1();". Jak przejdziemy sobie nieco niżej to mamy ciało metody o nazwie metoda_1(). A w metodzie main() mamy wywołanie tej metody. To co jest w metodzie nastąpi dopiero po jej wywołaniu. Jak się jej nie wywoła to co, niech sobie będzie i jest fajnie. Będziemy tego potrzebować w sensie tej metody to sobie po prostu ją wywołamy. Warto jest tworzyć metody. Jak tworzymy powiedzmy kalkulator to wszystkie metody kalkulatora odnoszą się właśnie do kalkulatora, a nie do różnych rzeczy tak. Nie mieszamy klas znaczeniowo. To taka fajna programistyczna zasada. Dalej mamy metodę "zwroc_zmienna_1()" w sensie jej wywołanie. Ta metoda robi ciekawą rzecz, mianowicie zwraca wartość zmiennej składowej klasy i zapisuje w zmiennej lokalnej. Następnie ta zmienna lokalna jest wyświetlana właśnie w taki sposób jaki jest pokazany. Kolejna metoda "ustaw_zmienna_1( 10 )" już przyjmuje argument czyli tutaj liczbę, a dokładnie liczbę 10. Czyli ustawia naszą zmienną_1 tak żeby miała nową wartość, a następnie ją zwraca i wyświetlamy sobie tą wartość.