如何使数据成员只能访问类和子类

可能重复:
为什么Java中没有子类可见性修饰符?

Java的访问级别表显示了4种不同的选项,用于控制对类成员的访问:

Modifier Class Package Subclass World public YYYY protected YYYN no modifier YYNN private YNNN 

但是,对于“仅对类和子类可访问”,没有修饰符。 那是:

 Modifier Class Package Subclass World c++prot YNYN 

是否有可能在Java中定义这样的访问级别?

如果是这样,怎么样?

如果不可能,这必须归功于精心设计的原则。 如果是这样,那个原则是什么。 换句话说,为什么在Java中使用这样的访问级别不是一个好主意?

设计原则是开发人员不会恶意破解他们自己的程序。 如果你不相信同一个包中的类表现正常,你就会有严重的非技术问题恕我直言。

访问修饰符用于限制意外错误,并且它们尝试以最小的复杂性停止大多数错误。

BTW:通过reflection/ JNI调用,您可以绕过所有访问修饰符,因此它们不是坚如磐石的安全措施恕我直言。

C ++没有内置包的概念,因此在比较c ++和Java之间的访问修饰符时,你应该忽略’Package’列:)