Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП_KAZYMYR.doc
Скачиваний:
14
Добавлен:
09.11.2019
Размер:
3.71 Mб
Скачать

2.5.3.Спеціальні змінні в Java

В Java є дві спеціальні змінні: this і super. Змінна this використовується як посилання на поточний об'єкт усередині його методу. Як і в C++, дана змінна побічно визначається у всіх класах але може бути викликана і явно, наприклад, при прихованні або затіненні змінних:

сlass X { static int i=5; // змінна класу

void f() {int i=3; // локальна змінна методу

…………………………………………………………

System......ut.println("i локальна ="+i); // i локальна =3

System.out.println("i класу ="+this.i); // i класу =5

}

}

У даному прикладі відбувається затінення змінної i, і щоб її визначити, необхідно використати змінну this. Безпосередньо this указує на об'єкт – екземпляр класу, але в Java можна звертатися до змінних класу з його екземпляра.

Примітка: при затіненні змінних у розгляд беруться тільки імена змінних без врахування типу.

Змінна super в Java використовується для посилань на екземпляри суперкласу.

class Y extends X { // клас Y є підкласом X

static int i=4;

……………

void g() {

System......ut.println("змінна i класу Y " + this.i);

// змінна i класу Y = 4

System.out.println("змінна i класу X " + super.i);

// змінна i класу X = 5

}

}

2.5.4.Спеціальні змінні в Delphi

В Delphi є дві спеціальні змінні: Self і Sender. Змінна Self є посиланням на об'єкт-одержувач повідомлення, а Sender використовується в процедурах – оброблювачах подій. Sender вказує на об'єкт, що породив подію. Змінна Sender завжди використовується як параметр відповідного оброблювача й має тип TObject, тому необхідно здійснювати приведення типів перед її використанням:

Procedure TForm1.OnClick (Sender:TObject);

begin

(Sender as TControl).Caption:='Моя форма';

еnd;

2.6.Посилання

Відомі два основних способи передачі параметрів у функції:

  • за значенням;

  • по найменуванню - через покажчики.

Для полегшення передачі параметрів по найменуванню використовуються посилання. Посилання є другим ім'ям змінної (alias). Використовуючи посилання можна передавати параметри без застосування покажчиків, що значно полегшує розуміння коду.

2.6.1.Визначення посилань в SmallTalk, Delphi і Java

В SmallTalk імена всіх змінних є посиланнями на об'єкти. В Delphi посилання можуть використовуватися як для простих, так і для класових типів, а в Java посиланнями є змінні, що вказують на об'єкти. Це відноситься й до спеціальних змінних. Однак у кожному разі посилання реалізуються через покажчики.

2.6.2.Особливості визначення посилань у С++

Загальна форма визначення посилань представляється, як <тип> & <ім'я>

Наприклад:

int y = 3;

int &x = y; // посилання на тип int

y=5; // x також буде рівнятися 5

Особливості визначення:

  1. Посилання повинні бути проініціалізовані при оголошенні.

  2. Посиланнями можуть бути будь-які типи, у тому числі й класові:

class X;

X &x;

  1. Посиланнями можна оперувати, як об'єктами(а не покажчиками):

void increment (int &x)

{x+=1;}

void main ()

{int y = 3;

increment (y);} // y = 3+1 =4

  1. Зміна змінної при передачі її як параметра, відбувається лише в тому випадку, коли тип фактичного й формального параметра збігаються. У противному випадку компілятор створює копію змінної, переданої як фактичний параметр, і надалі буде застосовувати цю копію, а сама змінна при цьому не змінюється:

void main ()

{double z = 4.0;

increment (z); } // z = 4(0; }

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]