说我有一个带有一些成员的类,并且这些成员的访问修饰符比类本身的限制少。
一个具体的例子可能是:
package apples;
class A { // package private
public int foo() { // public (=> less restrictive than *package private*)
return 42;
}
}
据我所知,对[[class访问修饰符的限制要比对[[member访问修饰符的限制更大,它将覆盖较少限制的member访问修饰符。因此,限制较少的member访问修饰符应该完全无效。
我构造的情况如下:
apples.B
提供了一个公共方法bla()
,该方法返回对apples.A.foo
的引用。pizzas.C
调用apples.B.bla
以获得对A.foo
的引用并调用它。A.foo()
对C
不直接可见,但只能通过B.bla()
间接访问foo()
package private]的访问修饰符没有区别。
package apples;
import java.util.function.IntSupplier;
public class B {
public IntSupplier getReferenceToAFoo() {
A aInstance = new A();
return aInstance::foo;
}
}
package pizzas;
import apples.B;
import java.util.function.IntSupplier;
public class C {
private int callAFooIndirectly() {
B bInstance = new B();
IntSupplier intsupplier = bInstance.getReferenceToAFoo();
return intsupplier.getAsInt();
}
public static void main(String[] args) {
C cInstance = new C();
int i = cInstance.callAFooIndirectly();
System.out.println(i);
assert 42 == i;
}
}
说我有一个带有一些成员的类,并且这些成员的访问修饰符比类本身的限制少。一个具体的例子可能是:包装苹果; class A {//封装为私有...
我的理解正确吗?