Java - klasa i obiekt

13 maja 2026 11:34

Klasa

Czym jest Klasa?

Wyobraź sobie, że klasa to foremka do ciastek (lub schemat budowy domu). Sama w sobie nie jest ciastkiem, ale określa, jaki kształt i składniki będzie miało każde ciastko, które z niej powstanie.

W programowaniu:

  • Klasa: To szablon/wzór kodu.

  • Obiekt: To konkretna rzecz stworzona na podstawie tej klasy (konkretne ciastko).


Z czego składa się klasa?

Klasa składa się z trzech głównych elementów. Użyjmy przykładu klasy Pies:

  • Właściwości (Pola/Atrybuty): To cechy, które opisują obiekt. To zmienne wewnątrz klasy.

    • Przykład: imie, rasa, kolorSiersci.

  • Konstruktor: To specjalna metoda, która uruchamia się tylko raz – w momencie tworzenia obiektu. Służy do tego, aby "nastawić" początkowe wartości. Nazywa się tak samo jak klasa.

  • Metody: To czynności (zachowania), które obiekt potrafi wykonać.

    • Przykład: szczekaj(), biegnij(), dajGlos().


Typy metod (Co metoda oddaje?)

Metoda może coś zrobić i zakończyć pracę, albo coś zrobić i "oddać" (zwrócić) wynik.

  • void (Pusty): Metoda robi swoje zadanie i nic nie zwraca. Po prostu wykonuje instrukcję.

    • Przykład: void szczekaj() -> Pies po prostu szczeka (wyświetla napisy na ekranie). Nie dostajesz żadnej liczby ani tekstu do ręki.

  • Inne typy (int, String, boolean itp.): Metoda wykonuje obliczenia i zwraca wynik, którego możesz użyć dalej w kodzie. Musi zawierać słówko return.

    • Przykład: int podajWiek() -> Metoda oblicza wiek i oddaje Ci liczbę (np. 5).


Słówko this

Słowo this oznacza "ten konkretny obiekt, w którym teraz jestem". Służy do rozróżnienia pola klasy od zmiennej, która przyszła z zewnątrz (np. w argumencie metody), jeśli mają taką samą nazwę.

Zasada: this.imie oznacza "imię tego psa (z właściwości klasy)", a samo imie to zazwyczaj "imię podane w nawiasie jako parametr".


Przykład w kodzie (Podsumowanie)

Oto jak to wygląda w praktyce:

public class Pies {

    // 1. WŁAŚCIWOŚCI (cechy psa)
    String imie;
    int wiek;

    // 2. KONSTRUKTOR (ustawia startowe wartości)
    public Pies(String imie, int wiek) {
        // "this.imie" to pole klasy, "imie" to wartość podana przy tworzeniu
        this.imie = imie;
        this.wiek = wiek;
    }

    // 3. METODA TYPU VOID (robi coś, nic nie oddaje)
    public void szczekaj() {
        System.out.println(this.imie + " robi hau hau!");
    }

    // 4. METODA ZWRACAJĄCA WARTOŚĆ (oddaje wynik - w tym przypadku liczbę)
    public int przeliczWiekNaLudzkie() {
        return this.wiek * 7; // Zwraca wynik obliczenia
    }
}

Tworzenie obiektu

Na podstawie tego kawałku kodu opiszę czym jest obiekt, jak go się robi, na co trzeba zwracać uwagę.

// 1. DEFINICJA KLASY (Schemat)
class Samochod {
    // Właściwości
    String marka;
    int predkosc;

    // Konstruktor (Przyjmuje markę, prędkość startowa to 0)
    public Samochod(String marka) {
        this.marka = marka;
        this.predkosc = 0;
    }

    // Metoda void (Zmienia stan obiektu - przyspiesza)
    public void gazDoDechy() {
        this.predkosc = this.predkosc + 10;
        System.out.println(this.marka + " przyspiesza! Brum brum!");
    }

    // Metoda zwracająca (Zwraca aktualną prędkość)
    public int pobierzPredkosc() {
        return this.predkosc;
    }
}

// 2. TWORZENIE OBIEKTÓW (Użycie)
public class Main {
    public static void main(String[] args) {
        
        // --- TWORZENIE OBIEKTU ---
        // Typ (Klasa) -> Nazwa zmiennej -> = new -> Wywołanie konstruktora
        Samochod auto1 = new Samochod("Fiat");
        Samochod auto2 = new Samochod("Ferrari");

        // --- UŻYWANIE METOD ---
        
        // Fiat stoi w miejscu
        System.out.println("Prędkość Fiata: " + auto1.pobierzPredkosc());

        // Ferrari przyspiesza dwa razy
        auto2.gazDoDechy();
        auto2.gazDoDechy();

        // Sprawdzamy prędkość Ferrari
        int predkoscFerrari = auto2.pobierzPredkosc();
        System.out.println("Prędkość Ferrari: " + predkoscFerrari);
        
        // Zauważ, że Fiat nadal ma prędkość 0! Obiekty są niezależne.
        System.out.println("Prędkość Fiata nadal: " + auto1.pobierzPredkosc());
    }
}

 Słowo kluczowe new

Samochod auto1 = new Samochod("Fiat");

To najważniejsza linijka. new mówi Javie: "Weź schemat 'Samochod', zarezerwuj miejsce w pamięci komputera i stwórz mi nowy, konkretny samochód o nazwie Fiat".


Operator kropki (.)

auto2.gazDoDechy();

Kropka oznacza dostęp do wnętrza obiektu. Czytamy to jako: "Dla obiektu auto2, uruchom metodę gazDoDechy".


Niezależność

Zauważ, że gdy Ferrari (auto2) przyspieszało, Fiat (auto1) nadal stał w miejscu. Każdy obiekt stworzony przez new żyje własnym życiem i ma swoje własne wartości zmiennych.