CodeGym /Курсове /All lectures for BG purposes /Зареждане на класове

Зареждане на класове

All lectures for BG purposes
Ниво, Урок
На разположение

Вече говорихме за факта, че класовете са сложни типове данни. Сега нека поговорим малко за другата страна на класовете - How класовете се обработват от Java машината. Не забравяйте, че в Java всичко е обект, дори клас. Класът е обект. Това учудва ли ви? Тогава да продължим.

Зареждане на клас в паметта

Всъщност, когато клас се зареди в паметта, се създават три специални "обекта":

Зареждане на клас в паметта

Кратко описание на илюстрацията:

Жълт правоъгълник:

Кодовият файл се съхранява на диска като файл с разширение ".class". Той съдържа информация за класа, неговите полета и методи, Howто и изходния code на методите, компorран в byte code.

Оранжев правоъгълник:

Когато Java машината зареди клас в паметта, тя компorра byte codeа в машинен code, специфичен за процесора и операционната система на компютъра. Само Java машината има достъп до този машинен code. Като Java програмисти, ние нямаме достъп до него.

Зелен правоъгълник:

Java машината създава обект, който съдържа всички статични променливи и методи на класа. Имате достъп до този "обект", като използвате името на класа.

Например, когато пишете , вие се позовавате на статичната променлива, разположена в класа. Този обект е нашият зелен правоъгълник. И това е мястото, където се съхранява статичната променлива.java.lang.Math.PIPIjava.lang.Mathjava.lang.MathPI

Син правоъгълник:

Когато Java машината зареди codeа на даден клас в паметта, тя създава специален java.lang.Classобект, който съхранява информация за заредения клас: неговото име, имена на методи, имена и типове на полета и т.н.

Името "Клас" може да бъде малко объркващо. Би било по-логично да го наречем ClassInfo, тъй като този клас просто съхранява няHowва информация за заредения клас.

Можете да получите обекта Class за всеки тип, като използвате команда като тази:

Class name = ClassName.class;

Примери:

Код Забележка
Class a = String.class;
Вземете Classобект с информация за Stringкласа
Class b = Object.class;
Вземете Classобект с информация за Objectкласа
Class c = Integer.class;
Вземете Classобект с информация за Integerкласа
Class d = int.class;
Вземете Classобект с информация за intтипа
Class e = void.class;
Вземете Classобект с информация за voidтипа

Можете също така да получите препратка към обект за описание на клас от всеки обект, тъй като всеки обект има метод getClass(), който наследява от Objectкласа.

Примери:

Код Забележка
Class a = "Hello".getClass();
Същият обект катоString.class
Class b = new Integer().getClass();
Същият обект катоInteger.class
Class c = Boolean.TRUE.getClass();
Същият обект катоBoolean.class
Коментари
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION