Przejdź do głównej treści
eLearner.app
Moduł 2 · Lekcja 1 z 23/14 w kursie~12 min
Lekcje modułu (1/2)

Klasy i Obiekty

Java jest językiem skupionym na Programowaniu Zorientowanym Obiektowo (OOP). W OOP modelujemy świat rzeczywisty za pomocą obiektów. Obiekt posiada stan (dane) i zachowania (akcje).

Klasy i Obiekty

  • Klasa: Jest to szablon (lub projekt), który definiuje cechy i zachowanie danego typu obiektu.
  • Obiekt: Jest to konkretna instancja utworzona na podstawie klasy.

Na przykład, jeśli Car jest klasą, to Twój samochód w garażu jest konkretnym obiektem.

Pola Instancji i Konstruktory

Dane wewnątrz klasy nazywane są polami instancji (lub atrybutami). Aby zainicjalizować stan obiektu w momencie jego tworzenia, używa się specjalnej metody zwanej konstruktorem.

Konstruktor ma taką samą nazwę jak klasa i nie posiada typu zwracanego (nawet void).

Code
class Dog {
    // Campi istanza
    String name;
    int age;

    // Costruttore
    public Dog(String name, int age) {
        this.name = name; // 'this' fa riferimento al campo dell'oggetto corrente
        this.age = age;
    }
}

Tworzenie Obiektu za Pomocą new

Aby utworzyć obiekt w pamięci, używamy słowa kluczowego new, po którym następuje konstruktor klasy:

Code
public class Main {
    public static void main(String[] args) {
        // Creazione di un oggetto Dog
        Dog myDog = new Dog("Fido", 3);

        // Accesso ai campi
        System.out.println(myDog.name + " ha " + myDog.age + " anni.");
    }
}

Referencja this

Słowo kluczowe this w Javie odnosi się do bieżącego obiektu, na rzecz którego wywoływany jest konstruktor lub metoda. Jest używane głównie do unikania dwuznaczności, gdy parametry konstruktora mają takie same nazwy jak pola instancji obiektu (przesłanianie zmiennych):

Code
class User {
    String username;

    public User(String username) {
        this.username = username; // this.username è il campo istanza, username è il parametro
    }
}

Alokacja Pamięci: Stack vs Heap

Zrozumienie sposobu alokacji pamięci w Javie jest kluczowe:

  1. Stack (Stos): Szybki, zorganizowany obszar pamięci, w którym przechowywane są zmienne typów prostych oraz referencje do obiektów (adresy w pamięci) lokalne dla metod.
  2. Heap (Sterta): Większy, dynamiczny obszar pamięci, w którym alokowane są faktyczne obiekty (za pomocą słowa kluczowego new).

Kiedy deklarujemy Dog myDog = new Dog("Fido", 3);:

  • Referencja myDog jest tworzona na Stosie (Stack).
  • Rzeczywisty obiekt Dog wraz ze swoimi danymi tworzony jest na Stercie (Heap).
  • Zmienna myDog wskazuje na adres obiektu na Stercie.

Spróbuj sam

Ćwiczenie#java.m2.l1.e1
Próby: 0Ładowanie...

Uzupełnij klasę Person dodając pole name oraz odpowiedni konstruktor. Następnie w metodzie main utwórz obiekt Person o nazwie p i imieniu Alice.

Ładowanie edytora...
Pokaż wskazówkę

Wpisz `String name;` wewnątrz klasy, zadeklaruj konstruktor `public Person(String name) { this.name = name; }` i utwórz obiekt za pomocą `new Person('Alice')`.

Rozwiązanie dostępne po 3 próbach

Ćwiczenie#java.m2.l1.e2
Próby: 0Ładowanie...

Utwórz klasę Book z polami title (String) oraz pages (int), pełnym konstruktorem, a następnie w metodzie main utwórz książkę o nazwie b, tytule Moby Dick i mającą 600 stron.

Ładowanie edytora...
Pokaż wskazówkę

Pamiętaj, aby zdefiniować oba pola w klasie Book, przypisać je w konstruktorze za pomocą `this.title = title;` i `this.pages = pages;` oraz użyć `new Book('Moby Dick', 600)`.

Rozwiązanie dostępne po 3 próbach

Ćwiczenie#java.m2.l1.e3
Próby: 0Ładowanie...

Utwórz klasę Product z polami name (String) oraz price (double) i konstruktorem inicjalizującym oba pola. W metodzie main utwórz obiekt Product o nazwie p, nazwie Laptop i cenie 999.99.

Ładowanie edytora...
Pokaż wskazówkę

Zadeklaruj pola `String name;` oraz `double price;` w klasie Product, przypisz je w konstruktorze przy użyciu `this.name = name;` i `this.price = price;`, a na koniec utwórz obiekt w metodzie main.

Rozwiązanie dostępne po 3 próbach