Їх так і називають – примітивні типи. Наприклад, int – це один з примітивних типів, а String – це вже складний тип, зберігає свої дані у вигляді таблиці символів (де кожен символ - це примітивний тип char).
Складні типи утворюються з простих шляхом угруповання. Такі типи ми називаємо класами. Коли ми описуємо у програмі новий клас – це означає, що ми оголошуємо новий складний складений тип, дані якого будуть або іншими складними типами, або примітивними типами.
Код на Java
|
Опис
|
public class Person
{
String name;
int age;
}
|
Об’явили новий складний тип – Person.
Його дані – це змінна name типу String (складний тип) і змінна age типу int(примітивний тип) |
public class Rectangle
{
int x, y, width, height;
}
|
Об’явили новий складний тип – Rectangle.
Він складається із четирьох змінних примітивного типу – int. |
public class Cat
{
Person owner;
Rectangle territory;
int age;
String name;
}
|
Об’явили новий складний – Cat. У нього є змінні:
- owner, складний тип Person - territory, складний тип Rectangle - age, примітивний тип int - name, складний тип String |
Т. к. великі (складні) типи містять у собі багато маленьких (примітивних), то їх об'єкти займають багато пам'яті. Більше, ніж звичайні змінні примітивних типів. Іноді набагато більше. Присвоювання таких змінних виконувалося дуже довго і вимагало копіювання великих обсягів пам'яті. Тому змінні складних типів зберігають у собі не сам об'єкт, а лише посилання на нього! Тобто чотирьохбайтовий адрес. Цього вистачає, щоб можна було звертатися до даних цих об'єктів. Всю складність, пов'язану з цим, бере на себе Java-машина.
Код на Java
|
Опис
|
String s;
String s = null;
|
Еквівалентні записи.
|
Person person;
person = new Person();
person = null;
|
Створили змінну person, її значення null.
Занесли в її адрес нового створеного об’єкту. Присвоїли змінній посилання null. |
Cat cat = new Cat();
cat.owner = new Person();
cat.owner.name =
"God";
|
Створили об’єкт Cat, занесли його ссилку в змінну cat.
cat.owner дорівнює null.
Занесли в cat.owner ссилку на новостворений об’єкт Person. cat.owner.name поки ще null.
cat.owner.name присвоїли значення – God.
|
Змінні діляться на два типи: примітивні і ссилочні. Примітивні типи у себе всередині зберігають значення, а ссилочні – посилання на об'єкт. Примітивні типи – це int, char, boolean і ще трохи, а ссилочні типи – це всі інші, і утворюються вони за допомогою класів.
Код на Java
|
Опис
|
|
Cat cat;
|
Оголошує посилальну змінну з ім'ям cat і типомCat.. Значення змінної cat – посилання null.
|
|
new Cat();
|
Створює об'єкт типу Cat.
|
|
Cat cat = new Cat();
|
Створює посилальну змінну типу cat cat.
Створює новий об'єкт типу Cat. Присвоює в змінну cat посилання на новостворений об'єкт. |
|
Cat
murzik = new Cat();
Cat vaska = new Cat(); |
Створюються два об'єкта, посилання на які присвоюються двом різним
змінним відповідно.
|
|
Cat murzik = new Cat();
Cat vaska = new Cat(); vaska = murzik; |
Створюються два об'єкта, посилання на які присвоюються двом різним
змінним.
Потім, змінній vaska присвоюється посилання на об'єкт, що міститься в змінній murzik.. Тепер обидві змінних посилаються на перший створений об'єкт.
(На другий більше ніхто не посилається – другий об'єкт вважається
сміттям)
|
|
Cat
murzik = new Cat();
Cat vaska = null; vaska = murzik; murzik = null; |
Створюється один об'єкт типу Cat, посилання на який заноситься в першу
змінну (murzik), друга змінна (vaska) містить порожню (нульову) посилання.
Обидві змінні посилаються на один об'єкт. Тепер тільки vaska посилається на об'єкт, але не murzik. |
1 Модифікатор «public»
До змінної, методу або класу, позначеного модифікатором public, можна звертатися з будь-якого місця програми. Це найвища ступінь відкритості - ніяких обмежень немає.
2 Модифікатор «private»
До змінної або методу, позначеному модифікатором private, можна звертатися тільки з того ж класу, де він оголошений. Для всіх інших класів позначений метод або змінна - невидимі і «як би не існують». Це найвища ступінь закритості – тільки свій клас.
3 Без модифікатора
Якщо змінна або метод не помічені ніяким модифікатором, то вважається, що вони помічені «модифікатором за замовчуванням». Змінні або методи з таким модифікатором (тобто взагалі без якого-небудь) видно всім класам пакету, в якому вони оголошені. І тільки їм. Цей модифікатор ще іноді називають «package», натякаючи, що доступ до змінних і методів відкритий для всього пакету, в якому знаходиться їх клас
Немає коментарів:
Дописати коментар