CodeGym /Kursy /JAVA 25 SELF /Pojęcie klasy i obiektu

Pojęcie klasy i obiektu

JAVA 25 SELF
Poziom 14 , Lekcja 1
Dostępny

1. Co to jest klasa i obiekt

Zacznijmy od analogii. Wyobraź sobie rysunek (plan) samochodu. Na planie jest zaznaczone, że samochód ma cztery koła, silnik, kolor, siedzenia itd. Ale sam plan nie jeździ po drogach, nie hałasuje silnikiem i nie potrzebuje benzyny. To tylko opis tego, jak samochód jest zbudowany.

Klasa w programowaniu to taki sam „szablon” (albo wzorzec), który określa, jakie dane (pola) i działania (metody) będą miały jej egzemplarze.

Obiekt to już „prawdziwy” samochód, złożony według tego planu, czyli konkretny egzemplarz. Każdy obiekt ma swój stan (na przykład jeden samochód jest czerwony, a inny — niebieski) i zachowanie: każdy obiekt może wykonywać działania zdefiniowane w klasie (na przykład jechać, hamować, trąbić).

Przykłady z życia

  • Klasa: Człowiek (Person) — opis, że człowiek ma imię, wiek, wzrost i potrafi mówić lub biegać.
  • Obiekty: Vasya, Petya, Katya — konkretne osoby, każda ze swoim imieniem i wiekiem.
Klasa Obiekt 1 Obiekt 2
Person
name = "Vasya" 
age = 25
name = "Katya" 
age = 30

Dlaczego klasy są ważne?

  • Grupować powiązane zmienne i metody razem.
  • Tworzyć dowolną liczbę obiektów o tej samej strukturze, ale różnych danych.
  • Łatwo opisywać złożone byty: na przykład „rachunek bankowy”, „produkt”, „książka”, „użytkownik”.

2. Składnia deklaracji klasy

W Javie klasę deklaruje się za pomocą słowa kluczowego class. Następnie podajemy nazwę klasy (zwyczajowo — wielką literą), a potem — nawiasy klamrowe, wewnątrz których zapisujemy pola i metody.

Najprostszy przykład

public class Person {
    // Tutaj będą pola i metody
}

Wyjaśnienie:

  • public — modyfikator dostępu.
  • class — informuje kompilator: „deklaruję klasę”.
  • Person — nazwa klasy (wymyślasz samodzielnie, ale wielką literą).

Ważne zasady nazewnictwa klas

  • Nazwa klasy powinna zaczynać się wielką literą (np. Car, Account, Book).
  • W nazwie klasy nie dopuszcza się spacji i znaków specjalnych poza podkreślnikiem i $ (choć to rzadkość).
  • Jeśli nazwa składa się z kilku słów, używaj stylu CamelCase: BankAccount, BookStore.

Gdzie pisać klasy?

Klasę można zadeklarować w osobnym pliku (zwykle tak się robi: jeden plik — jedna klasa) lub wewnątrz innej klasy (o klasach zagnieżdżonych porozmawiamy później).

Na przykład plik Person.java:


public class Person {
    // pola i metody
}

3. Pola i metody klasy (krótko)

Na razie zadeklarowaliśmy tylko klasę, ale jest pusta — jak pudełko bez zawartości. Dodajmy do niej „właściwości” (pola) i „działania” (metody).

Pola (zmienne wewnątrz klasy)

Pola opisują, jakie dane będzie miał każdy obiekt tej klasy.


public class Person {
    String name; // imię osoby
    int age;     // wiek
}

Metody (funkcje wewnątrz klasy)

Metody opisują, co obiekt potrafi robić.

public class Person {
    String name;
    int age;

    void sayHello() {
        System.out.println("Cześć, mam na imię " + name + "!");
    }
}

Wyjaśnienie:

  • void — metoda nic nie zwraca (o wartościach zwracanych porozmawiamy później).
  • sayHello() — nazwa metody, nawiasy okrągłe są obowiązkowe.
  • Wewnątrz metody można odwoływać się do pól klasy (na przykład do name).

4. Tworzenie obiektu

A teraz — magia! Jak z planu zrobić „prawdziwy samochód”? Do tego służy słowo kluczowe new.

Składnia tworzenia obiektu


Person vasya = new Person();
  • Person — typ zmiennej (nasza klasa).
  • vasya — nazwa zmiennej (możesz wymyślić dowolną).
  • new Person() — utworzenie nowego obiektu typu Person.

Teraz mamy zmienną vasya, która wskazuje na obiekt klasy Person. Ten obiekt ma swoje pola i metody.

Dostęp do pól i metod

Odwołujemy się do pól i metod przez kropkę:

vasya.name = "Vasya";
vasya.age = 25;

vasya.sayHello(); // Wyświetli: Cześć, mam na imię Vasya!

Można tworzyć dowolną liczbę obiektów

Person petya = new Person();
petya.name = "Petya";
petya.age = 30;

petya.sayHello(); // Cześć, mam na imię Petya!

Każdy obiekt — niezależna „kopia” z własnymi danymi.

5. Powiązanie z poprzednimi tematami

Do dzisiejszej lekcji wszystkie zmienne i metody deklarowaliśmy bezpośrednio w klasie z metodą main i nie zastanawialiśmy się nad tworzeniem własnych typów. Teraz możemy tworzyć własne „pojemniki” na dane i funkcje.

To otwiera ogromne możliwości! Możesz opisywać dowolne byty, które występują w Twoim zadaniu: klientów, produkty, rachunki, zamówienia, zwierzęta, samochody — cokolwiek. Programy stają się bardziej ustrukturyzowane, czytelne i skalowalne.

Przykład: nasza pierwsza własna klasa

Napiszmy prostą klasę do naszej miniaplikacji — powiedzmy, „rachunek bankowy” (BankAccount). Będziemy rozwijać ten przykład w miarę postępów w kursie.

public class BankAccount {
    String owner;     // właściciel rachunku
    int balance;      // saldo rachunku

    void printInfo() {
        System.out.println("Właściciel: " + owner + ", saldo: " + balance + " euro.");
    }
}

Teraz w metodzie głównej main (która wciąż jest potrzebna do uruchomienia programu) możemy tworzyć obiekty tej klasy:

public class Main {
    public static void main(String[] args) {
        BankAccount account1 = new BankAccount();
        account1.owner = "Ivan";
        account1.balance = 1000;
        account1.printInfo(); // Właściciel: Ivan, saldo: 1000 euro.

        BankAccount account2 = new BankAccount();
        account2.owner = "Maria";
        account2.balance = 2000;
        account2.printInfo(); // Właściciel: Maria, saldo: 2000 euro.
    }
}

Zwróć uwagę: każdy obiekt ma swoje własne wartości pól. Jeśli zmienisz saldo w account1, nie wpłynie to w żaden sposób na account2.

Schemat wizualny: klasa i obiekty

graph TD
    subgraph Class
        Person["Class Person | name:String | age:int | sayHello()"]
    end

    subgraph Objects
        vasya["vasya : Person | name = 'Vasya' | age = 20"]
        petya["petya : Person | name = 'Petya' | age = 25"]
    end

    vasya --> Person
    petya --> Person

Wyjaśnienie:

  • Person — to klasa (szablon).
  • vasya i petya — obiekty (egzemplarze) utworzone według tego szablonu.

6. Typowe błędy przy deklarowaniu klas i tworzeniu obiektów

Błąd nr 1: nazwa klasy małą literą.
W Javie przyjęto (kompilator nie protestuje, ale wszyscy doświadczeni programiści — tak!) nazywać klasy wielką literą. Nie pisz class person — pisz class Person.

Błąd nr 2: brak nawiasów klamrowych.
Pamiętaj, że ciało klasy zawsze musi być ujęte w nawiasy klamrowe.

public class Person // błąd!
    String name;

Poprawnie:

public class Person {
    String name;
}

Błąd nr 3: próba dostępu do pól i metod klasy bez utworzenia obiektu.
Jeśli metoda lub pole nie są zadeklarowane jako static, można się do nich odwoływać tylko przez obiekt:

Person.sayHello(); // błąd!

Poprawnie:

Person vasya = new Person();
vasya.sayHello();

Błąd nr 4: niezgodność nazwy pliku z nazwą klasy (dla klasy public).
Jeśli klasa jest zadeklarowana jako public, nazwa pliku musi odpowiadać nazwie klasy:

// Plik Person.java
public class Person { ... }

Jeśli plik nazywa się inaczej, kompilator zgłosi błąd.

Błąd nr 5: używanie pól klasy bez utworzenia obiektu.
Pola klasy (nie static) należą do obiektu, a nie do samej klasy.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION