具有嵌套类的抽象类,这可能吗?

时间:2011-03-15 20:02:43

标签: java

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

3 个答案:

答案 0 :(得分:10)

当然,内部类的访问修饰符遵循与字段和方法相同的规则。只要嵌套类是publicprotected或者子类在同一个包中而内部类是包私有(默认访问修饰符),那么您的类是抽象的还是具体的并不重要),子类可以访问它。

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)

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

但你可以轻易地尝试过这个: - )