访问权限修饰符Protected专题

 

上图描述:A类在a包下,m()方法被protected修饰

上图描述:B类也在a包下,B类是A类的子类。

解析:B类和A类是同包类,BA类的子类,因此b对象可以调用m()方法。

上图描述:C类也在a包下。

解析:C类与A类、B类属于同包类,因此a对象和b对象都可以调用m()方法。

上图描述:D类在b包下,D类是A类的子类。

解析:虽然D类与A不同包,但DA子类因此d对象可以调用m()方法。

上图描述:E类在b包下。

解析:E类与A不同包E类也不是A子类EA类也不是本类,因此d对象不能调用m()方法

上图描述:E类在b包下,E类是A类的子类。

解析:E类与A不同包EA类的子类,但d对象却不能不能调用m()方法。原因如下:E类是A类的子类,看似符合要求,但d对象是由D类创建,并非E类创建,而E类与A类又不同包,所以d对象不能调用m()方法。

 

综上得出结论:如果两个类不同包,但构成父子关系,则父类中被protected修饰是方法,子类对象调用该方法时必须在对应的子类中(在子类中调用该方法时必须是由子类创建的对象才能调用该方法)

posted on 2019-03-11 22:42  帅成一匹马  阅读(120)  评论(0编辑  收藏  举报

导航