CodeGym /Kursy /Składnia Java /Jak tworzyć obiekty?

Jak tworzyć obiekty?

Składnia Java
Poziom 5 , Lekcja 4
Dostępny

– OK. Ostatnio zajmowaliśmy się klasami. Dzisiaj opowiem Ci, jak tworzyć obiekty. To bardzo proste. Piszesz słowo kluczowe new, a następnie nazwę klasy, której obiekt chcesz utworzyć.

Przykład
Kot kot = new Kot();
Reader reader = new BufferedReader(new InputStreamReader(System.in));
InputStream is = new FileInputStream(path);

– Przecież ja to już wiem.

– Wiem, że wiesz. Ale słuchaj dalej.

– Podczas tworzenia obiektu możesz w nawiasach przekazać różne argumenty. Więcej powiemy o tym później. A teraz przyjrzyjmy się klasie Kot:

Kod Java Opis
class Kot {
    public String imie;

    public String getImie() {
        return imie;
    }

    public void setImie(String imie) {
        this.imie = imie;
    }
}

imie jest zmienną instancji. Ma ona modyfikator dostępu publicznego, który uwidacznia ją wszędzie w projekcie.

Metoda getImie jest getterem. Zwraca wartość zmiennej instancji imie. Nazwa metody pochodzi od słowa „get” i nazwy zmiennej, która pisana jest wielką literą.

Metoda setImie jest setterem. Jest używana, aby przypisać do zmiennej instancji nową wartość imie. Nazwa metody pochodzi od słowa „set” i nazwy zmiennej, która pisana jest wielką literą. W tej metodzie parametr ma tę samą nazwę, co zmienna instancji, więc poprzedzamy nazwę zmiennej instancji słowem this.

– Czym są te gettery i settery?

– Powszechną praktyką w Javie jest ukrycie zmiennych przed innymi klasami. Zazwyczaj zmienne deklarowane wewnątrz klas mają modyfikator publiczny.

– Aby umożliwić innym klasom zmienianie wartości tych zmiennych, tworzy się parę metod: get i set dla każdej z nich. Metoda get zwraca bieżącą wartość zmiennej. Metoda set nadaje nową wartość tej zmiennej.

– Jaki w tym sens?

– Jeśli nie chcemy, aby ktokolwiek zmieniał wartość zmiennej instancji, możemy po prostu nie tworzyć dla niej metody set bądź możemy po prostu ustawić ją jako prywatną. Możemy także wprowadzić dodatkowe kontrole danych do metody. Jeśli przekazana nowa wartość jest nieprawidłowa, nic się nie zmieni.

– Rozumiem.

– Ponieważ klasa może mieć wiele zmiennych, nazwy metod get i set zazwyczaj zawierają tych nazwy zmiennych, których dotyczą.

– Jeśli zmienna ma nazwę „imie”, to metody będą się nazywać setImie i getImie itp.

– Rozumiem. To chyba dość logiczne.

– Tutaj jest więcej przykładów pracy z nowoutworzonym obiektem:

Krok Kod Opis
1
new Kot();
Tworzy obiekt Kot
2
Kot kotOskar = new Kot();
Zapisuje obiekt Kot w zmiennej kotOskar
3
kotOskar.imie = "Oskar";
kotOskar.wiek = 6
kotOskar.waga = 4;
Zapełnia obiekt danymi: imie, wiek, waga
4
kotOskar.sleep();
Wywołuje metodę na obiekcie
5
kotOskar.walka(kotKafel);
Spraw, by obiekty oddziaływały na siebie.
Komentarze (11)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Dawid Poziom 13, Poland
3 grudnia 2023
A w przykładzie: "Reader reader = new BufferedReader(new InputStreamReader(System.in));" Na samym początku zamiast Reader nie powinno być BufferedReader? Proszę o odpowiedź dlaczego tak || dlaczego nie :D
Pawel Cieciera Poziom 8, Poland, Poland
6 stycznia 2024
BufferedReader dziedziczy po Reader. Przypisywanie referencji obiektu do nadklasy jest jak najbardziej dozwolone, a wręcz zalecane. To jest polimorfizm
Anonymous #11274698 Poziom 8, Gorzow Wielkopolski, Poland
19 kwietnia 2023
Jest jakaś ogólna definicja słowa Obiekt w Java?
Nao Poziom 9, Poland, Poland
18 września 2023
Najbardziej ogólna definicja wg mnie: Obiekt to instancja (pojedynczy "egzemplarz") klasy
Tomasz Poziom 7, Wrocław, Poland
11 czerwca 2020
Aby umożliwić innym klasom zmienianie wartości tych zmiennych, tworzy się parę metod: get i set dla każdej z nich. Troche tego nie rozumiem ;/ W jaki sposób przy pomocy settera odwołać się do zmiennej przy pomocy innej klasy?
Damian Poziom 18, Lublin, Poland
7 grudnia 2020
Chodzi o to że w klasach powinno się tworzyć prywatne zmienne, do których inna klasa nie będzie miała dostępu. A jeśli wyjątkowo będziemy jej potrzebowali, używamy metody np. setImie, aby zmienic tę prywatną zmienną, lub getImie, aby tę zmienną uzyskać.
Msaters Poziom 20, Legnica, Poland
24 grudnia 2019
W 2 tabelce , w 3 kroku w 2 podpunkcie nie ma średnika na końcu "zdania" . pownno być kotOskar.wiek = 6 ; , a nie kotOskar.wiek = 6
Radosław Poziom 30, Rzeszów, Polska
20 listopada 2019
"Powszechną praktyką w Javie jest ukrycie zmiennych przed innymi klasami. Zazwyczaj zmienne deklarowane wewnątrz klas mają modyfikator publiczny"-chyba powinno być modyfikator prywatny?
Kamil Litwin Poziom 19, Wrocław, Poland
30 maja 2020
Prawda, jest błąd.
NeoBTK Poziom 8, Katowice, Poland
31 sierpnia 2020
Chyba chodzi o to, że jak nie ustawi sie żadnego to domyślnie mają publiczny.
Marcin Poziom 8
28 października 2020
Jak sie nie ustawi żadnego, to mają tzw. package private, więc też nie do końca.