注意:请仔细阅读全文,然后将其错误地标记为重复。
所以我不确定这是否是写的,也找不到简单的图表来回答它: -的确,如果您在超类中具有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表那么简单。例如,对于受保护的对象,包外部的子类不能对父类对象(仅子类对象)运行父类方法。诸如此类的小问题不会在“重复项”中得到回答。
在将其标记为重复对象之前,所有人都可以阅读它的全部内容。我解释了为什么不是这样,但是懒惰者没有阅读全部内容,也没有回答问题。
答案 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