博客来源:
参考博客源:https://blog.csdn.net/asahinokawa/article/details/80777302
之前认识片面,现在得已纠正
误解区:protected修饰的成员对其子类可见.
现在的片面理解是:protected修饰的成员对其子类的可见分为两种情况:
1.子类与父类在同一个包中时父类的protected成员是包内可见子类可见的;
2.子类与父类不在同一个包中时子类实例可以访问其从父类继承而来的protected成员,而不能访问父类实例的protected成员。
代码分析如下:
package com.erlang.modifer01; //父类Animal
public class Animal { private String name; protected void run(){ } }
package com.erlang.modifer01; //同包下的类 public class Dog{ public static void main(String[] args){ Animal anl = new Animal(); anl.name = "erhua";//编译通过 anl.run();//编译通过 } }
package com.erlang.modifer02;
import com.erlang.modifer01; //不同包下的子类 public class Dog extends Animal{ public static void main(String[] args){ Animal anl = new Animal(); anl.name = "erhua";//编译报错 anl.run();//编译报错 Dog dog = new Dog(); dog.name = "erha";//编译通过 dog.run();//编译通过 } }