Object Oriented Programming with D Language. Private access specifier.
Jacob Carlborg
doobnet at gmail.com
Fri Aug 22 05:07:16 PDT 2008
Max Samukha wrote:
> On Thu, 21 Aug 2008 10:34:29 +0200, Lars Ivar Igesund
> <larsivar at igesund.net> wrote:
>
>> Robert Fraser wrote:
>>
>>> DF wrote:
>>>> Why can private fields be accessed from other methods or classes in the
>>>> same module?
>>>>
>>>> If I wanted to access them from the same module I would make them package
>>>> public.
>>> It's a feature -- a replacement for "friend" in C++. The general idea of
>>> a module is that it is an autonomous code unit controlled by a single
>>> developer/team and if you're accessing a private function in the module,
>>> you have a good reason to. It's all the same file, so if you're changing
>>> something that accesses a private member, you can change the private
>>> implementation as well.
>>>
>>> "package" isn't implemented (sadly -- I find it very useful in Java so
>>> that a package has only a single public API).
>> package is implemented to mean that something is accessible to other modules
>> in the same package.
>
> It would be even more useful if members with package accesibility were
> accessible not only from the same package but also from its
> subpackages.
>
> Imagine there is a function, data structure or whatever that is used
> throughout a complex package containing nested packages but is not
> intended to be accessible by users of this package. Now I have to
> declare such a function/structure public. 'package' does not help me
> here.
Could "protected" help here? BTW what happened with "protected"? It's
not listed here under protection:
http://www.digitalmars.com/d/1.0/class.html
"protected" works at least with gdc.
More information about the Digitalmars-d
mailing list