|
ЗАУВАЖЕННЯ
Ім'я вихідного файлу Java повинне відповідати імені зберігаючого в ньому класу. Регістр букв важливий і в імені класу, і в імені файлу.
Клас - це шаблон для створення об'єкта. Клас визначає структуру об'єкта і його методи, що утворюють функціональний інтерфейс. У процесі виконання Java-програми система використовує визначення класів для створення представників класів. Представники є реальними об'ектамі.Терміни «представник», «екземпляр» та «об'єкт» взаємозамінні. Нижче наведена загальна форма визначення класу.
class ім'я_класу extends ім'я_суперкласу { type змінна1 об'єкта:
type змінна2 об'єкта:
type зміннаn об'єкта:
type ім'я методу1(список параметрів) { тіло методу;
}
type ім'я методу2(список параметрів) { тіло методу;
}
type ім'я методуM (список параметрів) тіло методу;
}
}
Ключове слово extends вказує на те, що «ім'я класу» - це підклас класу «ім'я суперкласу». На чолі класової ієрархії Java стоїть єдиний її вбудований клас - Object. Якщо ви хочете створити підклас безпосередньо цього класу, ключове слово extends і наступне за ним ім'я суперкласу можна опустити - транслятор включить їх у ваше визначення автоматично. Прикладом може служити клас Point, наведений раніше.
1. Змінні представників (instance variables)
Дані інкапсулюються в клас шляхом оголошення змінних між відкриваючих і закриваючих фігурними дужками, що виділяють у визначенні класу його тіло. Ці змінні оголошуються точно так само, як оголошувалися локальні змінні в попередніх прикладах. Єдина відмінність полягає в тому, що їх треба оголошувати поза методів, в тому числі поза методу main. Нижче наведено фрагмент коду, в якому оголошено клас Point з двома змінними типу int.
class Point { int х, у;
}
В якості типу для змінних об'єктів можна використовувати як будь-який з простих типів, так і класові типи. Скоро ми додамо до наведеного вище класу метод main, щоб його можна було запустити з командного рядка і створити кілька об'єктів.
Оператор New
Оператор new створює екземпляр вказаного класу і повертає посилання на новостворений об'єкт. Нижче наведено приклад створення і присвоювання змінної р екземпляра класу Point.
Point р = new Point();
Ви можете створити декілька посилань на один і той же об'єкт. Наведена нижче програма створює два різних об'єкта класу Point і в кожний з них заносить свої власні значення. Оператор точка використовується для доступу до змінних і методів об'єкта.
class TwoPoints {
public static void main(String args[]) {
Point p1 = new Point();
Point p2 = new Point();
p1.x = 10;
p1.y = 20;
р2.х = 42;
р2.у = 99;
System.out.println("x = " + p1.x + " у = " + p1.y);
System.out.println("x = " + р2.х + " у = " + р2.у);
} }
У цьому прикладі знову використовувався клас Point, було створено два об'єкти цього класу, і їх змінним х та у привласнені різні значення. Таким чином ми продемонстрували, що змінні різних об'єктів незалежні насправді. Нижче наведено результат, отриманий при виконанні цієї програми.
С:\> Java TwoPoints
х = 10 у = 20
х = 42 у = 99
Зауваження
Оскільки при запуску інтерпретатора ми вказали в командному рядку не клас Point, а клас TwoPoints, метод main класу Point був повністю проігнорований. Додамо в клас Point метод main і, тим самим, отримаємо закінчену програму.
class Point { int х, у;
public static void main(String args[]) {
Point p = new Point();
р.х = 10;
p.у = 20;
System.out.println("x = " + р.х + " у = " + p.y);
} }
2. Оголошення методів
Методи - це підпрограми, приєднані до конкретних визначень класів. Вони описуються всередині класу на тому ж рівні, що і змінні об'єктів. При оголошенні методу задаються тип повертається їм результату і список параметрів. Загальна форма оголошення методу така:
тип імя_метода (список формальних параметрів) {
тіло методу:
}
Тип результату, який повинен повертати метод може бути будь-яким, в тому числі і типом void - в тих випадках, коли повертати результат не вимагається. Список формальних параметрів - це послідовність пар тип-ідентифікатор, розділених комами. Якщо у методу параметри відсутні, то після імені методу повинні стояти порожні круглі дужки.
class Point { int х, у;
void init(int a, int b) {
х = а;
У = b;
} }
Виклик методу
У Java відсутня можливість передачі параметрів за посиланням на примітивний тип. У Java всі параметри примітивних типів передаються за значенням, а це означає, що у методу немає доступу до початкової змінної, використаної в якості параметра. Зауважимо, що всі об'єкти передаються по посиланню, можна змінювати вміст того об'єкта, на який посилається дана змінна.
3. Приховування змінних представників
У мові Java не допускається використання в одній або у вкладених областях видимості двох локальних змінних з однаковими іменами. Цікаво відзначити, що при цьому не забороняється оголошувати формальні параметри методів, чиї імена збігаються з іменами змінних представників. Давайте розглянемо як приклад іншу версію методу init, в якій формальним параметрам дані імена х і у, а для доступу до однойменних змінним поточного об'єкта використовується посилання this.
class Point { int х, у;
void init(int х, int у) {
this.x = х;
this.у = у } }
class TwoPointsInit {
public static void main(String args[]) {
Point p1 = new Point();
Point p2 = new Point();
p1.init(10,20);
p2.init(42,99);
System.out.println("x = " + p1.x + " у = •• + p-l.y);
System.out.printlnC'x = " + p2.x + " у = •• + p2.y);
} }
Конструктори
Конструктор - це метод класу, який ініціалізує новий об'єкт після його створення. Ім'я конструктора завжди збігається з ім'ям класу, в якому він розташований (також, як і в C + +). У конструкторів немає типу возвращаемого результату - ніякого, навіть void. Замінимо метод init з попереднього прикладу конструктором.
class Point { int х, у;
Point(int х, int у) {
this.x = х;
this.у = у;
} }
class PointCreate {
public static void main(String args[]) {
Point p = new Point(10,20);
System.out.println("x = " + p.x + " у = " + p.у);
} }
Програмісти на Pascal (Delphi) для позначення конструктора використовують ключове слово constructor.
5. Поєднання методів
Мова Java дозволяє створювати кілька методів з однаковими іменами, але з різними списками параметрів. Така техніка називається суміщенням методів (method overloading). Як приклад наведена версія класу Point, в якій поєднання методів використано для визначення альтернативного конструктора, який ініціалізує координати х і у значеннями за умовчанням (-1).
class Point { int х, у;
Point(int х, int у) {
this.x = х;
this.у = у;
}
Point() {
х = -1;
у = -1;
} }
class PointCreateAlt {
public static void main(String args[]) {
Point p = new Point();
System.out.println("x = " + p.x + " у = " + p.y);
} }
У цьому прикладі об'єкт класу Point створюється не при виклику Перший конструктор, як це було раніше, а за допомогою другого конструктора без параметрів. Ось результат роботи цієї програми:
С:\> java PointCreateAlt
х = -1 у = -1
ЗАУВАЖЕННЯ
Рішення про те, який конструктор потрібно викликати в тому чи іншому випадку, приймається відповідно до кількості і типом параметрів, зазначених в операторі new. Неприпустимо оголошувати в класі методи з однаковими іменами і сигнатурами. У сигнатурі методу не враховуються імена формальних параметрів враховуються лише їх типи і кількість.
Дата добавления: 2015-10-29; просмотров: 108 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Интерфейсные компоненты пользователя. | | | Спадкування |