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

2.4.4.Доступ до даних в Java

В Java передбачено три специфікатори доступу, правила дії яких наведені в табл. 2.2.

Таблиця 2.2

Правила дії специфікаторів доступу в Java

Специфікатор доступу

клас

підклас

пакет

оточення

private

v

protected

v

v

v

public

v

v

v

v

Якщо елемент класу оголошений як private, то він буде доступний тільки усередині даного класу. З інших класів доступ до нього одержати неможливо. У випадку оголошення елемента як protected, він буде доступний усередині класу, а також будь-якому класу усередині свого пакета й класам-нащадкам поза своїм пакетом. Якщо елемент буде оголошений як public, він буде видний з будь-якого місця програми й з будь-якого класу будь-якого пакета. Нарешті, якщо в елемента класу відсутній специфікатор, рівень доступу до нього визначається за замовчуванням: елемент доступний у тім пакеті, де оголошений сам клас.

Особливості доступу до даних:

  1. Використовується тільки оператор '.', тому що немає розходження між змінними - все є покажчиками.

  2. До змінних класу можна звертатися, як через об'єкти даного класу, так і використовуючи ім'я класу:

MyClass a;

a.classVar=3 ;

int i=MyClass.classVar;

  1. До змінних екземпляра можна звертатися тільки через об'єкти:

a.instVar=5;

2.5.Спеціальні змінні

Необхідність у цих змінних виникає тоді, коли потрібно усередині методу звернутися до об'єкта, для якого цей метод буде викликаний. До спеціальним змінних відносяться: self, super, this, sender. Дані змінні в різних мовах програмування існують для вказівки об'єктів-одержувачів повідомлень.

2.5.1.Спеціальні змінні в SmallTalk

В SmallTalk використовуються дві спеціальні змінні : self і super.

Усередині опису методу змінна self служить для позначення об'єкта-одержувача повідомлення, реалізованого за допомогою даного методу. Наприклад, в описі методу sqr, що забезпечує зведення в ступінь цілого числа, дана змінна використається в такий спосіб:

class Integer

instanceMethods 'sqr'

sqr

^(self*self)

При виклику методу sqr замість змінної self буде підставлений об'єкт, для якого даний метод викликається. Для приклада, показаного нижче, це буде ціле число, рівне 5:

a:=Integer new

a:=5

a sqr 25

Примітка: змінна self може використовуватись, як усередині методів екземпляра , так і усередині методів класу екземпляра. В останньому випадку замість її буде підставлятися об'єкт-клас.

Змінна super також указує на об'єкт-одержувач повідомлення, що реалізується за допомогою методу у якому вона застосовується Однак для цієї змінної викликається не метод даного класу, а однойменний метод суперкласу, тобто відбувається автоматична підстановка методу із суперкласу.

class Object

c lassMethods ‘new’

…………………………

class A

classMethods ‘new’

instanceMethods 'go'

go

super new

……………

При виконанні методу go для екземпляра класу А буде викликаний метод new класу Object.

2.5.2.Спеціальні змінні в C++

У С++ роль self виконує this, що є покажчиком на об'єкт класу, у методах в яких він використовується. Даний покажчик присутній неявно у всіх методах. Однак він може викликатися і явно:

Class X { X* this ;

int i;

int readme() {return i;}

};

//насправді мається на увазі:

int readme() {return this->i;}

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