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,booleanitp.): Metoda wykonuje obliczenia i zwraca wynik, którego możesz użyć dalej w kodzie. Musi zawierać słówkoreturn.-
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.imieoznacza "imię tego psa (z właściwości klasy)", a samoimieto 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.