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