|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Відносини між класамиІснують наступні види відносить між класами [4]: 1. Композиція. Класи A і В знаходяться у відношенні «клієнт-постачальник», якщо одним із полів класу В є об'єкт класу А. Клас А називається постачальником класу В, клас В називається клієнтом класу А. Для забезпечення доступу до методів класу постачальника, вони повинні бути забезпечені модифікатором public. 2. Спадкування. Класи А і В знаходяться у відношенні «батько-нащадок», якщо при оголошенні класу В клас А вказаний як батьківський клас. Клас А називається батьком класу В, клас В називається нащадком класу А. Для забезпечення доступу до методів класу батька, вони повинні бути забезпечені модифікатором pubic або protected. Створимо тепер клас Derived – нащадок класу Found. У простому випадку оголошення класу може виглядати так:
public class Derived: Found { } Тіло класу Derived порожнє, але це зовсім не означає, що об'єкти цього класу не мають полів і методів: вони успадковують всі поля і методи (крім конструктора) класу Found і тому можуть робити все, що можуть робити об'єкти батьківського класу. Можна навіть не створювати власних конструкторів класу. У цьому випадку автоматично додається конструктор за замовчуванням – конструктор без аргументів, який буде викликати конструктор без аргументів батьківського класу. Такий конструктор у батька повинен бути, інакше виникне помилка. Що може робити нащадок з полями? Насамперед, він може додати нові властивості – поля класу. Він може приховати поле батька, додавши власне поле з тим же ім'ям, що і поле батька, можливо, змінивши тип цього поля і його модифікатори. Приховування батьківського поля не означає, що нащадок видаляє поле, яке успадкував від батька. Це поле у нащадка залишається і доступно для виклику, але приховано, і щоб дістатися до нього, необхідно ім'я поля уточнити ім'ям батька, що задається ключовим словом base. Приховувані поля слід створювати з використанням модифікатору new. Якщо цього не зробити, то батьківське поле все одно буде приховано, і на етапі компіляції буде видано попередження про виниклу ситуацію. Додавання методів і зміна методів батька. Нащадок може: 1. Створити новий власний метод з ім'ям, відмінним від імен успадкованих методів. 2. Змінювати методи батька. Якщо ім'я доданого методу нащадка збігається з ім'ям методу батька можливі наступні ситуації: 2.1. Методи з однаковим ім’ям та різною сигнатурою – це перевантаження методів. 2.2. Методи з однаковим ім’ям та однаковою сигнатурою: 2.2.1. Приховування методу (оголошення з ідентифікатором new) При цьому батьківський метод доступний за допомогою слова base. 2.2.2. Перевизначення методу (тільки в тому випадку, якщо батьківський метод оголошений як віртуальний або абстрактний, для цього використовується модифікатор override). Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |