nazwa klasy -> zmienna = (?)

nazwa klasy -> zmienna = (?)
ZoooL
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 62
0

y0y0

mam 3 klasy:
"Imie", "Nazwisko" i "Main"

w klasie "Nazwisko" robie zmienna "Imie imie" jak ona dziala?
jesli robie zmienna typu Int przechowuje liczby, String litery.... a zmienna innej klasy (?)

pedegie
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 204
1

yoyo

przechowuje inne klasy : D, String to tez taka inna klasa, nawet mozesz w nia wejsc i zobaczyc jak wyglada

AK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3561
Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
1

String litery

Żebyś się nie zdziwił ;) Niemniej gdzie widzisz problem? Masz klasę

Kopiuj
class A{
    private int x;
    private int y;
}

Czemu miałbyś nie móc stworzyć sobie takiego obiektu? Założmy na chwilę ze to jest prosta struktura z C, po prostu twój obiekt to byłby obszar w pamięci w którym byłyby te 2 inty i tyle. Tak samo jak String byłby obszarem w pamięci gdzie są literki.
Zauważ że w komputerze w pamięci nie ma czegoś takiego jak obiekty czy typy. Są bajty i tyle. To jak te bajty interpretujesz to jest twoja sprawa. Np. masz w pamięci AAAA ale równie dobrze można to odczytać jako 4 bajtowego inta 0x41414141 (czyli 1094795585). Analogicznie, zamiast obiektu tej mojej klasy A mógłbyś uznać ze to tablica 2 intów.
Oczywiście java w praktyce dorzuca dużo rzeczy do takiego obiektu, więc to nie jest tak ze masz tam tylko te 2 gołe inty, ale idea jest taka sama.

elwis
  • Rejestracja: dni
  • Ostatnio: dni
1

Inne obiekty innych klas to tylko struktury złożone z kilku typów podstawowych w określonej kolejności. Metody klasy mogą być oddzielnie, tylko kompilator/maszyna wirtualna musi zadbać, że można je wykonywać tylko na obiektach danej klasy i żeby struktura obiektu w pamięci została zachowana.

C.mind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 95
DKN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 128
0

Chłopacy przedstawili jak wyglada sytuacja w podejściu obiektowym.
Jesteś na początku, wiec dobrze wiedzieć, ze są 2 sposoby na dotarcie do danych (tak, w rzeczywistości jest więcej, można przez refleksje i inne magiczne sztuczki, ale proszę sobie darować xd).
Jeden : Stworzenie nowego obiektu.
Dwa : Poprzez statyczna drogę.
Pierwsza droga: Co oznacza taki zapis dla pamięci ram?
Klasa klasa;
Nic. Dosłownie nic, nie tworzysz niczego w tym momencie, a tylko deklarujesz, ze klasa będzie miała jakiś typ.
Dopiero gdy zrobisz
new Klasa();
Pamięć RAM się włączy do zabawy. Jak uruchomisz ten kod, to oznacza, ze stworzyłeś obiekt. Ale chwila, jak tym obiektem operować?
No trzeba połączyć te 2 elementy.
Czyli Klasa klasa = new Klasa();
W tym momencie przypisaliśmy obszar pamięci do zmiennej i mozemy na niej wykonywać operacje.

Druga droga, to statyczna droga. Czyli element statyczny jest inicjalizowany przy uruchomieniu programu i jeżeli nic specjalnego się nie stanie to zostanie on tam do końca. Wiec możesz się dostać do statycznego elementu klasy bez tworzenia obiektu.
Czyli Klasa.x;

Trzecia droga jest przed tobą i jest bardzo długa.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.