总体思想:
当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × default √ √ × × private √ × × ×
题目1:展示protected方法具有包访问权限,但它仍然不是public的。
package iteye; public class apple { protected void eat(){ System.out.println("I eat a apple!"); } }
package iteye; public class test { public static void main(String []args) { apple a=new apple(); a.eat(); } }
输出正常,protected有包访问权限!如果不在一个包中的话,编译不会通过,jvm会告诉你这个方法是不可视的(not visible)
题目2:创建一个带有public、private、protected和包访问权限以及方法成员的类。创建一个该类的对象,看看在你视图调用所有类成员时,会得到什么类型的编译信息。
见总体思想。
题目3:创建一个带有protected数据的类,运用在第一个类中处理protected数据的方法在相同的文件中创建第二个类。
package iteye; public class test { public static void main(String []args) { apple a=new apple(); a.eat(); } } class apple { protected void eat(){ System.out.println("I eat a apple!"); } }
输出正常,同文件中等同于同包的访问权限。private无法访问!