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.
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.