编辑:我只用过Eclipse来编写Java,因此以下所有内容(以及我在Java方面的所有知识)都取决于Java在该环境中的编程方式。跨项目的继承和可视性
我有两个Eclipse项目:项目一个带班X和项目乙与Y类。类别Y来自项目B扩展类X来自项目A。
public class Y extends X // In short B is dependent on Project A
类X是public
,它有一个嵌套类Ò。
public class X {
class O { // default access modifier
}
}
在我的设置,类ÿ可以实例Ø只要Ø不private
。也就是说,即使O具有默认访问修饰符,Y仍然可以访问O的成员和变量。 这对我来说很让人困惑,因为我认为默认类意味着只有当外部类共享一个通用包时,外部类才能访问它。
所以我得到的结论是,每个项目中的默认包必须是相同的或以某种方式连接。我是否认为这是正确的?如果这是正确的,那么将一个项目的包中所做的更改反映在另一个项目的包中?
这提出了我正在处理的主要问题。我想控制访问类Ø这样,在我的例子,我想Ÿ到不能够实例Ø。我现在唯一能做的就是将O的可见性设置为私有,但这也限制了同一项目中的其他类(项目A)访问O。我想通过这门课Ÿ从项目乙(我认为是从项目一个有不同的封装)不能够访问Ø但是从同一项目为Y一些其他任意类/ O有访问O没有问题。我怎样才能做到这一点?
小心,Java语言中没有项目的概念。可见性适用于软件包。 – Savior
哦,我指的是具体的日食 – Manuel
你不能对可见度进行个案限制。默认访问修饰符给予同一包访问中的类;如果您希望_Y_无法访问_O_,请考虑将_Y_移动到另一个软件包。 – Jire