对protected一直比较迷惑,最近又遇到类似问题,仔细研究了一下才搞懂。。先大致说下 有空再贴上代码帮助理解
首先问题来源是 在父类中定义了一个protected权限的方法f() 然后子类中 new了一个父类对象,这时候用父类对象调用f() 却发现无法调用!(子类与父类不在同一个包下)
原因:protected权限的定义是 继承父类的子类可以调用这个方法 意思是只有满足这个条件的类------继承了父类的子类 才能访问这个方法f() 而父类不是子类(这句话好好理解一下) 所以说父类无法访问protected权限的方法 protected 和 public private 一样都是一种权限 没有特殊性 它的权限就是 只有子类可以访问。
而如果把父类子类放在同一个包下 那么父类可以访问f() 这是因为在同一个包下首先有包访问权限 可以理解为这时的protected 有包访问性。
第一次写博客,不足之处请见谅。大家共同讨论共同进步。