ЗНАЙ ИНТУИТ, Лекция, Въведение в обектно програмиране
6.3. Локални и глобални променливи. Модификатори на достъп и правила за видимост. Тази връзка
Както вече споменахме, данните могат да се предават на подпрограма чрез глобални променливи. Това могат да бъдат полета с данни на обекта, в метода на който се осъществява повикването, полета с данни на съответния клас или полета с данни на друг обект или клас. Използването на глобални променливи не се препоръчва поради две причини.
- Първо, при извикване в списъка с параметри не се вижда, че се осъществява достъп до съответните променливи и програмата става "непрозрачна" за програмиста. Какво го прави неструктуриран.
- На второ място, когато глобалната променлива е променена във функционална рутина, страничен ефект, свързано с факта, че функцията не само връща изчислената стойност, но също така променя състоянието на околната среда по незабележим начин за програмиста. Това може да е причина за лошо откриваеми логически грешки, които не се проследяват от компилатора.
Разбира се, има моменти, когато използването на глобални променливи е не само желателно, но просто необходимо - в противен случай те не биха били въведени като конструкция на програмни езици! Например, когато пишете метод в клас, обикновено трябва да получите достъп до полетата и методите на този клас. В Java такъв достъп се осъществява директно, без да се посочва името на обект или клас.
Правилата за достъп за методи и полета с данни (променливи) от други пакети, класове и обекти се задават с помощта на модификатори частни, защитен, публично. Правилата за достъп често се наричат правила за видимост и са синоними. Ако променлива или подпрограма са невидими в определена област на програмата, достъпът до тях се отказва.
частни - елемент (поле или метод за данни) е достъпен само в методи от този клас. Няма достъп от обекти! Тоест, ако сме създали обект, който има частно поле или метод, тогава е невъзможно достъпът до това поле или метод от обекта.
Модификаторът не е зададен - това означава, че е в сила достъпът по подразбиране - така наречената партида, когато съответният елемент е достъпен само от класовете на неговия пакет. Няма достъп от обекти, ако те са извикани в оператори, разположени в класове от други пакети!