C#: как закрыть public-члены?

0000

Имеется базовый класс A

class A
{
public float a;
public void f {};
}

От него наследуется два класса B и C. Класс B должен реализовать упрощенную версию A,
закрыв f а C - расширенную версию, добавив свои члены.
Можно как то сделать? Понимаю, что надо реализовать B-> A -> C.
Но все-таки?
P.S. Класс A непосредственно использоваться не будет, только B и C.

val63

И в чем потайной смысл?

hiper-hoper

а) а для чего ты это хочешь сделать?
б) это нарушает базовые принципы ООП, поэтому обычно такого сделать нельзя.

0000

, просто public переменные доступны в редакторе. Их видеть не хотел бы.
Раз нельзя, то нельзя. Значит надо поменять иерархию.
Вопрос в догонку: а в C# можно вызвать метод родителя, т.е. аналог Delphi inherited?

okis

В c++ это называется private inheritance, в c# такого нет

zorin29


public override void Method
{
base.Method;
}

Если тебе всего лишь нужно не показывать данный public метод в IntelliSense, пометь его атрибутом EditorBrowsable

0000

Спасибо :)

evgen5555

зато композицию никто не отменял

da_hedgehog

натяни на классы интерфейсы и используй фасад.
Оставить комментарий
Имя или ник:
Комментарий: