Java 抽象类和嵌套类,这可能吗?

Java 抽象类和嵌套类,这可能吗?,java,Java,如果我编写一个抽象类,然后在抽象类中嵌套一个类,那么我是否可以访问抽象类的任何子类中的方法?我在任何地方都找不到答案。当然,内部类上的访问修饰符遵循与字段和方法相同的规则。不管您的类是抽象的还是具体的,只要嵌套类是公共的,受保护的,或者子类在同一个包中,并且内部类是包私有的(默认访问修饰符),子类就可以访问它 public abstract class AbstractTest { // all subclasses have access to these classes p

如果我编写一个抽象类,然后在抽象类中嵌套一个类,那么我是否可以访问抽象类的任何子类中的方法?我在任何地方都找不到答案。

当然,内部类上的访问修饰符遵循与字段和方法相同的规则。不管您的类是抽象的还是具体的,只要嵌套类是
公共的
受保护的
,或者子类在同一个包中,并且内部类是包私有的(默认访问修饰符),子类就可以访问它

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 {}

}

如果嵌套类至少受到保护,那么我们可以访问它的方法(只要这些方法是公共的,或者我们在同一个包中并且它们不是私有的)


但是您可以自己轻松地尝试一下:-)

您能提供一个结构示例吗?不确定您的意思是类A是抽象的,类B是A的内部类(扩展A?静态?),类C扩展A到外部类?还是B?请再具体一点。
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;
    }
}