SuperClass / SubClass继承范围验证

时间:2019-03-04 19:34:17

标签: java inheritance subclass

注意:请仔细阅读全文,然后将其错误地标记为重复。

所以我不确定这是否是写的,也找不到简单的图表来回答它: -的确,如果您在超类中具有PUBLIC,PROTECTED或PACKAGE PRIVATE方法或字段,并且子类在SAME PACKAGE中,则包中的OUTSIDE或WITHIN类可以通过新的子类对象访问这些方法或字段并且如果该字段或​​方法是PRIVATE,那么它不能? -的确,如果您在超类中具有PUBLIC或PROTECTED方法或字段,而子类在DACKFERENT PACKAGE中,则包中的OUTSIDE或WITHIN类可以通过新的子类对象访问这些方法或字段,并且字段或方法是PACKAGE PRIVATE,还是PACKAGE PRIVATE,那么它不能?

换句话说,所有访问组合(32个组合):public,protected,package private和private,用于方法,字段,相同或不同包中的子类的访问,由在类中创建子类对象的类进行访问相同或不同包中的类。 请注意,此问题与“重复项”之间的主要区别在于,我想知道在包内部/外部使用NON-SUBCLASSES进行访问。不只是子类中的草皮。重复项不够具体,因为有一些微小的规则不像4 x 2表那么简单。例如,对于受保护的对象,包外部的子类不能对父类对象(仅子类对象)运行父类方法。诸如此类的小问题不会在“重复项”中得到回答。

在将其标记为重复对象之前,所有人都可以阅读它的全部内容。我解释了为什么不是这样,但是懒惰者没有阅读全部内容,也没有回答问题。

1 个答案:

答案 0 :(得分:0)

我在文档上找到了此表:

                  Access Levels

Modifier    Class Package Subclass World
public        Y      Y        Y      Y
protected     Y      Y        Y      N
no modifier   Y      Y        N      N
private       Y      N        N      N


根据我的经验:

公开:任何课程都可以访问
受保护的:只有继承该类的相同软件包中的类才能访问
私有:只有该班级可以访问。子类无法访问其父级的私有字段/方法。

Docs