package p10_klasy.v2;

public class Osoba {
    // Zmienne definiowane wewnątrz klasy bez słowa static
    // są to "pola" (field) / "atrybuty" (attribute) / "zmienne instancyjne" (instance variable)
    // są to te dane, które pamięta w sobie każdy obiekt tej klasy.
    String imie, nazwisko;
    int wiek;
    
    {
        // fragment kodu w {klamerkach} umieszczony bez. w klasie
        // to jest tzw. "blok inicjalizacyjny", który wykona się podczas tworzenia każdego obiektu jeszcze przed konstruktorem
        System.out.println("powstaje obiekt Osoba: " + super.toString());
    }
    
    Osoba() {
    }
    
    Osoba(String imie, String nazwisko, int wiek) {
        this.imie = imie;
        this.nazwisko = nazwisko;
        this.wiek = wiek;
    }
    
    // Metoda to jest czynność, którą potrafi wykonać obiekt danej klasy.
    void przedstawSie() {
        System.out.println("Nazywam się " + imie + " " + nazwisko + " i mam " + wiek + " lat.");
    }
    
    public String toString() {
        return imie + " " + nazwisko + " (" + wiek + " lat)";
    }

}
