如果我编写一个抽象类,然后在抽象类中嵌套一个类,我是否可以在抽象类的任何子类中访问它的方法?我无法在任何地方找到答案..
答案 0 :(得分:10)
当然,内部类的访问修饰符遵循与字段和方法相同的规则。只要嵌套类是public
,protected
或者子类在同一个包中而内部类是包私有(默认访问修饰符),那么您的类是抽象的还是具体的并不重要),子类可以访问它。
public abstract class AbstractTest {
// all subclasses have access to these classes
public class PublicInner {}
protected class ProtectedInner {}
// subclasses in the same package have access to this class
class PackagePrivateInner {}
// subclasses do not have access to this class
private class PrivateClass {}
}
答案 1 :(得分:1)
class Abstract {
modifier1 class Nested { modifier2 int i = 0; }
Abstract() {
Nested n = new Nested();
n.i = 1;
}
}
class Sub extends Abstract {
Sub() {
Nested n = new Nested();
// have access as long you not choose "private"
// for `modifier1` or `modifier2`:
n.i = 5;
}
}
答案 2 :(得分:0)
如果嵌套类至少受到保护,我们可以访问它的方法(只要方法是公共的,或者我们在同一个包中,它们不是私有的。)
但你可以轻易地尝试过这个: - )