Baza Wiedzy

Referencja

Rozróżnienie tego, czym jest obiekt, a czym jest referencja jest kluczem do zrozumienia w jaki sposób funkcjonuje programowanie obiektowe. Nie tylko w Javie, ale w dowolnym języku programowania.

Klasy🔗

Programowanie obiektowe opiera się na definiowaniu klas i obiektów. Klasa jest szablonem na podstawie którego może powstawać wiele podobnych egzemplarzy (instancji). Klasa może zawierać cechy w postaci pól i zachowanie w postaci metod. Przykładowa klasa reprezentująca produkt może wyglądać w taki sposób:

Product.java

class Product {
    private String name;
    private double price;

    public Product(String name, double price) {
        this.name = name;
        this.price = price;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }
    
    public double getBruttoPrice() {
        return price * 1.23;
    }
}

Obiekty🔗

Klasa Product jest szablonem, na podstawie którego możemy teraz tworzyć obiekty. Obiekty tworzymy przez wywołanie konstruktora przy pomocy instrukcji new.

Shop.java

class Shop {
    public static void main(String[] args) {
        Product product1 = new Product("mleko", 3.2);
        Product product2 = new Product("czekolada", 2.4);
    }
}

W powyższym programie utworzyliśmy dwa obiekty i przypisaliśmy je do dwóch różnych zmiennych product1 i product2.

Kurs programowania Java

 

Referencje🔗

Referencją nazywamy zmienną, która wskazuje na obiekt. W powyższym przykładzie powiemy więc, że product1 i product2 są dwoma referencjami wskazującymi na dwa różne obiekty w pamięci. Możesz to sobie wyobrazić schematycznie w taki sposób:

W praktyce String także jest klasą i "mleko" oraz "czekolada" są obiektami, więc pola name w obiektach, na które wskazują referencje product1 i product2 także są referencjami.

Z punktu widzenia pamięci, referencje są po prostu wartością liczbową, która określa lokalizację danego obiektu w pamięci. Referencje, które utworzone są jako zmienne lokalne w ramach metod przechowywane są w ramkach pamięci, które przechowywane są w obszarze pamięci o nazwie stos. Obiekty natomiast przechowywane są na stercie.

Najlepszy newsletter o Javie w Polsce

Czy chcesz otrzymywać nowości ze świata Javy oraz przykładowe pytania rekrutacyjne? Zapisz się na newsletter i bądź na bieżąco! Otrzymasz także ekskluzywne materiały oraz informacje o nowych kursach i promocjach.

Nikomu nie udostępniamy Twojego maila, a jeśli zechcesz to w każdej chwili możesz się wypisać.

Komentarze do artykułu

Wyłączyliśmy możliwość dodawania komentarzy. Poniżej znajdziesz archiwalne wpisy z czasów gdy strona była jeszcze hobbystycznym blogiem. Zapraszamy natomiast do zadawnia pytań i dyskusji na naszej grupe na facebooku.