nazwa klasy -> zmienna = (?)

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 (?)

1

yoyo

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

1

String litery

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

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.

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.

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1