请教:protected

如果一个类的成员被声明为protected,那么这个类的派生类和同一个包内的其他类,都可以访问它!
这样的话,同一个包内的其他类不也成了它的派生类了吗?至少是变相的!
我觉得这不利于信息的隐蔽!
不知道各位大侠如何看待这个问题,如何改进?

我理解的保护的概念
比如有class a ,class b,class c
a与b是一个包内的
a有一个保护变量inta
那么我在b中定义a实例a1,那么就可以这样访问 a1.inta;
但是在class c中定义a的实例a2,则不可以这样访问 a2.inta;

不想被其他类访问就用private好了。

你说的没错!但你不觉得让b只能访问a的pulbic成员更好吗?毕竟它不是派生!难道java的包还有其他深层次的用意?

你定义成private,派生类怎么访问?
我门只是想不让非派生类访问!

getter/setter啊

直接访问成员的做法是不妥的。

看起来你应该是从 C++ 转过来的程序员~~ 对很多问题喜欢深究。
It's very good.
但是 Java 中并不提供你所说的机制。前不久我还和一位同事在争论此事,他坚信 Java 有 friendly 这个关键字,可以做到只有子类才能访问,但是我看过 Java Specification ,那里并没有这个东西。

仔细想想,不难发现,可以使用Java 的 Package 机制,将同样的功能或者相似的功能打在一个包内。一个 package 就变成用于解决某方面问题的一个工具包,在这个工具包内,子模块之间相互通信,并没有什么不妥。

我看系统一般使用 Interface ,系统的边界使用 Interface 定义。外界系统要与本地系统通信,应该通过本地系统暴露出的interface来调用。这已经能满足系统设计与访问控制的需求。开发程序员如果要使用你的 lib,他们会从 JavaDoc 中查找能调用方法,这也是一种很好的机制。

谢谢你的指点!
本来是有private protected这个关键字的,但後来被取消了!
我想是可以通过其他方法解决这个问题的,就象你说的!