August 22, 2008 Re: Object Oriented Programming with D Language. Private access specifier. | ||||
|---|---|---|---|---|
| ||||
Jacob Carlborg Wrote:
> Max Samukha wrote:
> > On Thu, 21 Aug 2008 10:34:29 +0200, Lars Ivar Igesund <larsivar@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.
That won't help, if I don't want to have my field in children of a class.
| ||||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply