现在A有一个公共的静态int变量
我希望这个变量只在A和B类中可见,而不是在C,D,E中可见。
是否可以在不使变量受保护并使用继承的情况下执行此操作?
答案 0 :(得分:3)
将A类和B类放在自己的包中,并提供字段默认(包)可见性。 (不要给它public
,protected
或private
说明符。
答案 1 :(得分:3)
如果您不使用任何可见性修饰符,该成员将具有包级别可见性,您可以将A和B放在同一个包中,将C,D,E放在不同的包中。
然而,这里有一个明确的code smell ......
答案 2 :(得分:0)
你必须拥有静态吸气剂。在getter中,你可以抛出异常,捕获它,检查调用者然后授予访问权限或抛出访问被拒绝的异常。
除此之外,答案在于继承和其他众所周知的OO解决方案。
答案 3 :(得分:0)
不可能。如果B类只是A类,你可以使用内部类。
答案 4 :(得分:0)
您可以做的是将A和B放在一个单独的包中,并使该变量仅对包的成员可见。要做到这一点,您只需要放弃可见性关键字(例如公共或受保护的)。 Java中变量的默认可见性是包。
答案 5 :(得分:0)
aVar和bVar是公共的和静态的,但只能从A类和B类(和AB类)访问。
`
public class AB
{
private static class A
{
public static int aVar ;
}
private static class B
{
public static int bVar ;
}
}
`