Object Oriented Programming with D Language. Private access specifier.

Max Samukha samukha at voliacable.com.removethis
Thu Aug 21 04:38:38 PDT 2008


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.



More information about the Digitalmars-d mailing list