ьній Java-машині (JVM) незалежно від комп'ютерної архітектури. Програми на Java виконуються віртуальною машиною Java (JVM) - програмою, обробній байтовий код і передавальної інструкції обладнанню як інтерпретатор. Java - об'єктно-орієнтована мова, в якому використовується при програмуванні інкапсуляція, поліморфізм і успадкування.
Інкапсуляція - властивість мови програмування, що дозволяє об'єднати і захистити дані і код в об'єкті і приховати реалізацію об'єкта від користувача (прикладного програміста). При цьому користувачеві надається тільки специфікація (інтерфейс) об'єкта. Користувач може взаємодіяти з об'єктом тільки через цей інтерфейс. Реалізується за допомогою ключового слова: public. Користувач не може використовувати закриті дані і методи. Реалізується за допомогою ключових слів: private, protected, internal. Приховування реалізації доцільно застосовувати в наступних випадках:
- гранична локалізація змін при необхідності таких змін;
- прогнозованість змін (які зміни в коді треба зробити для заданого зміни функціональності) і прогнозованість наслідків змін.
Поліморфізм - можливість об'єктів з однаковою специфікацією мати різну реалізацію.
Мова програмування підтримує поліморфізм, якщо класи з однаковою специфікацією можуть мати різну реалізацію - наприклад, реалізація класу може бути змінена в процесі успадкування.
Коротко сенс поліморфізму можна виразити фразою: «Один інтерфейс, безліч реалізацій».
Поліморфізм дозволяє писати більш абстрактні програми і підвищити коефіцієнт повторного використання коду. Загальні властивості об'єктів об'єднуються в систему, яку можуть називати по-різному - інтерфейс, клас. Спільність має зовнішнє і внутрішнє вираз:
- зовнішня спільність проявляється як однаковий набір методів з однаковими іменами і сигнатурами (ім'ям методів і типами аргументів і їх кількістю);
- внутрішня спільність - однакова функціональність методів.
Її можна описати інтуїтивно або виразити у вигляді строгих законів, правил, яким повинні підкорятися методи. Можливість приписувати різну функціональність одному методу (функції, операції) називається перевантаженням методу (перевантаженням функцій, перевантаженням операцій).
В об'єктно-орієнтованих мовах клас є абстрактним типом даних. Поліморфізм реалізується за допомогою успадкування класів і віртуальних функцій. Клас-нащадок успадковує сигнатури методів класу-батька, а реалізація, в результаті перевизначення методу, цих методів може бути інший, що відповідає специфіці класу-нащадка. Інші функції можуть працювати з об'єктом класу-батька, але при цьому замість нього під час виконання підставлятиметься один з класів-нащадків. Це називається пізнім зв'язуванням.
Клас-нащадок сам може бути батьком. Це дозволяє будувати складні схеми спадкування - деревовидні або сетевідние. Абстрактні (або чисто віртуальні) методи не мають реалізації взагалі (насправді деякі мови, наприклад C + +, допускають реалізацію абстрактних методів у батьківському класі). Вони спеціально призначені для наслідування. Їх реалізація повинна бути визначена в класах-нащадках. Клас може успадковувати функціональність від декількох класів. Це називається множинним спадкуванням. Множи...