Хобрук: Ваш путь к мастерству в программировании

способ абстрактного класса для явного интерфейса реализации

сегодня я читал явный интерфейс реализации. Я узнал, что одним из его применений является ограничение доступа клиентов к методам интерфейса через объект класса.

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


  • Вы имеете в виду, что хотите, чтобы функция обращалась к методам абстрактного класса только через абстрактный класс? 26.02.2013
  • могу я спросить, почему? какой сценарий вы хотите решить с этим? 26.02.2013
  • ну, мне просто интересно, возможно ли это. У меня нет сценария для этого, но я просто пытаюсь понять, действительно ли это особая функция с явной реализацией интерфейса, или мы можем настроить и поиграть с абстрактными классами и добиться того же результата. 26.02.2013

Ответы:


1

Вы можете объявить метод как protected - тогда он доступен только для этого класса и подклассов (его нет в public API). Однако, если вы хотите, вы не можете override сделать его public в производном классе - вам нужно new его:

abstract class Foo {
    protected void Bar() {...}
}
class SuperFoo : Foo {
    new public void Bar() { base.Bar(); } // <==== ugly
}
26.02.2013
  • Мне нужен способ доступа только к абстрактным методам через ссылочную переменную абстрактного класса. Не через ссылочную переменную производного класса, даже если производный класс может иметь реализацию метода. Надеюсь, теперь я ясно выразился. 26.02.2013
  • @DeepakRaj абстрактные методы можно использовать нормально, если они общедоступны; поэтому, если у Foo было public abstract void SomeMethod();, вы можете сделать Foo foo = new SuperFoo(); foo.SomeMethod(); 26.02.2013
  • спасибо Марк за объяснение. В том же примере, если у нас есть SuperFoo sfoo = new SuperFoo();, есть ли способ ограничить выполнение sfoo.SomeMethod(); ? 26.02.2013
  • Новые материалы

    Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
    Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

    Фишинг — Упаковано и зашифровано
    Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..

    ВЫ РЕГРЕСС ЭТО?
    Чтобы понять, когда использовать регрессионный анализ, мы должны сначала понять, что именно он делает. Вот простой ответ, который появляется, когда вы используете Google: Регрессионный..

    Не зря же это называют интеллектом
    Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

    LeetCode Проблема 41. Первый пропущенный положительный результат
    LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..

    Расистский и сексистский робот, обученный в Интернете
    Его ИИ основан на предвзятых данных, которые создают предрассудки. Он словно переходит из одного эпизода в другой из серии Черное зеркало , а вместо этого представляет собой хронику..

    Управление состоянием в микрофронтендах
    Стратегии бесперебойного сотрудничества Микро-фронтенды — это быстро растущая тенденция в сфере фронтенда, гарантирующая, что удовольствие не ограничивается исключительно бэкэнд-системами..