Kurs Java

Własne obiekty

Zacznijmy od tego co napisaliśmy w trakcie poprzedniego rozdziału. Wspomnieliśmy tam, że domyślnie każda klasa posiada konstruktor bezparametrowy. Krótko mówiąc, jeśli tworzymy klasę Item to dwa poniższe zapisy są tożsame.
public class Item {
             
}    
public class Item {
    
    public Item() {
    
    }          
}    
W obu przypadkach klasa posiada konstruktor bezparametrowy. Po lewej stronie konstruktor ten jest dodawany przez Javę niejawnie (nie widzimy go w kodzie). Natomiast po prawej stronie dodajemy konstruktor włąsnoręcznie i tak naprawdę w takiej sytuacji jest to nadmiarowe. Pamiętamjmy jednak, że konstruktor bezparametrowy jest dodawany niejawnie tylko wtedy, gdy nie stworzyliśmy innego konstruktora (z parametrami).

Nowy obiekt - Bez parametrów

W przypadku gdy klasa posiada tylko konstruktor bezparametrowy, nowy obiekt tworzymy według schematu:
    NazwaKlasy nazwaObiektu = new NazwaKlasy();
Przeanalizujmy teraz kod, zgodnie z tym jak go piszemy. Idziemy więc od lewej strony i piszemy po kolei:
  • Nazwę klasy, której obiekt chcemy utworzyć.
  • Nazwę nowego obiektu.
  • Operator przypisania =
  • Operację tworzenia obiektu za pomocą słowa kluczowego new użytego w stosunku do nazwy klasy.
  • Nazwę klasy (ponownie), której obiekt chcemy utworzyć.
Zobaczmy teraz jak to będzie wyglądało, gdy stworzymy obiekt na bazie realnej klasy Item:
    Item item = new Item();

Nowy obiekt - Z jednym parametrem

Przyjrzyjmy się teraz wszystkiemu jeszcze raz, ale tym razem używając konstruktora z jednym parametrem. Mamy zatem klasę:
public class Item {

    int id;
    
    public Item(int id) {
        this.id = id;
    }        
    
    public String getId() {
        return this.id;
    }                 
} 
Nowy obiekt tworzymy według schematu:
    NazwaKlasy nazwaObiektu = new NazwaKlasy(<parametr>);
Ponownie przeanalizujmy kod idąc od lewej strony. Piszemy po kolei:
  • Nazwę klasy, której obiekt chcemy utworzyć.
  • Nazwę nowego obiektu. Na ten moment mamy pusty obiekt. Nie jest on zainicjowany żadnymi danymi.
  • Operator przypisania =
  • Operację tworzenia obiektu za pomocą słowa kluczowego new użytego w stosunku do nazwy klasy wraz z parametrem przekazywanym w nawiasie.
  • Nazwę klasy (ponownie), której obiekt chcemy utworzyć.
Jedyną różnicą jest to, że podczas tworzenia obiektu wywołujemy konstruktor z parametrem zamiast bezparametrowego. Utwórzmy przykładowy, nowy obiekt klasy Item, którego konstruktor będzie przyjmował tylko jeden parametr (id) o wartości 5:
    Item item = new Item(5);

Nowy obiekt - Z wieloma parametrami

Różnica pomiędzy konstruktorem z jednym parametrem, a tym z wieloma parametrami, polega jedynie na ilości przekazywanych do takiego konstruktora wartości. Przejdźmy więc teraz do miejsca, w którym skończyliśmy poprzedni rozdział i zobaczmy jak można stworzyć obiekt używając konstruktora z wieloma parametrami.
public class Item {

    int id;
    String name;
    Category category;
    
    public Item(int id, String name, Category category) {
    	this.id = id;
    	this.name = name;
    	this.category = category;
    }
    
    public void setId(int id) {
        this.id = id;
    }    
    
    public int getId() {
    	return id;
    }
    
    public void setName(String name) {
        this.name = name;
    }    
    
    public String getName() {
    	return name;
    }
    
    public void setCategory(Category category) {
        this.category = category;
    }    
    
    public Category getCategory() {
    	return category;
    }    
}              
No dobrze kod wygląda znajomo, ale skąd ta klasa Category?

Jest to kolejna klasa (oprócz klasy Item), którą tworzymy w ramach projektu, tak aby w przyszłości można było określić do jakiej kategorii należy nasz item. Dla uproszczenia niech będzie ona zawierała tylko dwa pola: id i nazwę:
public class Category {

    int id;
    String name;
    
    public Category(int id, String name) {
        this.id = id;
        this.name = name;
    }    

    public void setId(int id) {
    	this.id = id;
    }	
    
    public int getId() {
    	return this.id;
    }   
    
    public void setName(String name) {
        this.name = name;
    }
    
    public String getName() {
        return this.name;
    }    
}              


Oczywiście ponownie użyjemy słowa kluczowego new i wykonamy dokładnie takie kroki jak poprzednio. Zmieni się jedynie liczba parametrów:
    Item item = new Item(5, "Appa Item 1", new Category(1, "Appa Category 1"));
Jak widać do konstruktora obiektu przekazujemy wartość liczbową, obiekt tekstowy oraz obiekt klasy Category (wszystko zgodnie z typami parametrów zdefiniowanych w konstruktorze).

Dołożymy ten kawałek kodu jako nową linię do naszego programu startowego. Dzięki temu, podczas wykonywania programu zostanie stworzony obiekt item, a w jego polach będą przechowywane dane przekazane do obiektu w postaci konstruktora. Nasz obiekt stał się więc kontenerem na dane! Teraz odnosząc się do nazwy tego obiektu w innej linii programu możemy uruchomić metodę getName zdefiniowaną w klasie Item (szerzej o metodach piszemy w rozdziale Klasy i programowanie obiektowe oraz Rodzaje metod w ramach obiektu). Zwróci nam ona wartość zapisaną w polu name i tą wartość wydrukujemy na konsoli.
public class Start {

    public static void main(String[] args) {
        System.out.println("Hello JavAPPa");
        Item item = new Item(5, "Appa Item 1", new Category(1, "Appa Category 1"));
        System.out.println(item.getName());
    }
}
Taki program najpierw wypisze nam na konsoli tekst "Hello JavAPPa", a potem "Appa Item 1" i to jest dokładnie to co chcieliśmy uzyskać.
Linki
https://www.w3schools.com/java/java_classes.asp
Masz pytanie dotyczące tego rozdziału? Zadaj je nam!
Masz pytanie dotyczące prezentowanego materiału?
Coś jest dla Ciebie niejasne i Twoje wątpliwości przeszkadzają Ci w pełnym zrozumieniu treści?
Napisz do nas maila, a my chętnie znajdziemy odpowiednie rozwiązanie.
Najciekawsze pytania wraz z odpowiedziami będziemy publikować pod rozdziałem.
Nie czekaj. Naucz się programować jeszcze lepiej.
kursjava@javappa.com

Stale się rozwijamy, a więc bądź na bieżąco!
Na ten adres będziemy przesyłać informacje o ważniejszych aktualizacjach, a także o nowych materiałach pojawiających się na stronie.
Polub nas na Facebooku:
Nasi partnerzy:
Javappa to również profesjonalne usługi programistyczne oparte o technologie JAVA. Jeśli chesz nawiązać z nami kontakt w celu uzyskania doradztwa bądź stworzenia aplikacji webowej powinieneś poznać nasze doświadczenia.
Kliknij O nas .