Главная » Java » Возможность доступа и переопределение

0

Метод может быть переопределен только в том случае, если он доступен. Недоступный метод не наследуется, а раз так, то его не удастся и переопределить – нельзя переделать то, что не сделано. Метод, помеченный как private, не "виден" за пределами класса. Если вдруг в производном классе "объявится" метод с теми же сигнатурой и типом возвращаемого значения, что и метод рrivate базового класса, это будут два совершенно разных и не связанных между собой метода – метод производного класса в этой ситуации нельзя квалифицировать как переопределенный.

Что все это значит в практическом смысле? Внешний вызов метода производного класса (если предположить, что метод доступен извне) не таит никаких сюрпризов – вызывается именно тот, объявленный в производном классе, метод, который требуется, – такое поведение вполне предсказуемо. Если говорить об объекте базового класса, любой вызов одноименного приватного метода так же означает буквально то, что предполагается, – программа обращается именно к методу базового класса, а не к одному из возможных его "однофамильцев", принадлежащих производным классам. Коротко говоря, обращение к методу private всегда при водит к вызову метода, объявленного в текущем классе.

Если метод недоступен по причинам, связанным с тем, что базовый и производный классы принадлежат разным пакетам, ситуация несколько усложняется. Мы отложим обсуждение подобных вопросов до главы 13.

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии