Referencja
Spis treści
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.
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.
Dyskusja i komentarze
Masz pytania do tego wpisu? Może chcesz się podzielić spostrzeżeniami? Zapraszamy dyskusji na naszej grupie na Facebooku.