package p06_klasy_i_metody_wprowadzenie;

public class Klasa {
    // w klasie można definiować:
    // * pola (field), inaczej: zmienne instancyjne (instance variable), atrybuty
    //   każdy obiekt tej klasy będzie zawierał takie dane
    String imie;
    int liczba;

    // * zmienne statyczne / zmienne klasowe
    static int statyczna = 100;

    // metoda, czyli fragment programu, któremu nadajemy nazwę, może mieć parametry, może dawać wynik
    // metoda bez słowa "static" to metoda "instancyjna"
    // można ją wywołać poprzez obiekt, ma dostęp do pól obiektu
    void metodaZwykla() {
        System.out.println("Jestem zwykłą metodą i widzę zmienne");
        System.out.println("imie = " + imie + ", liczba = " + liczba + ", statyczna = " + statyczna);
    }

    // metoda statyczna jest czymś takim, jak funkcja w innych językach programowania
    // ma dostęp do zmiennych statycznych, ale nie do instancyjncyh, bo "nie wiemy na jakim obiekcie mamy działać"
    static void metodaStatyczna() {
        System.out.println("Jestem metodą statyczną i widzę zmienne tylko statyczne");
        System.out.println(statyczna++);
//        System.out.println(imie);
//        System.out.println(this.imie);
    }
}
