参考链接: Java访问修饰符
访问修饰符权限
PS 红色是不可访问
private
在当前类中 main方法之外可以借助名称使用 在main方法中需要实例化对象使用 我们想要在别的类中调用私有成员 就需要建立一个公有的方法 在公有方法中使用这个私有成员 也就是面向对象中的封装。 在继承中,私有成员无法被继承,子类无法使用父类的私有成员。
public:
在当前类中 main方法之外可以借助名称使用 在main方法中需要实例化对象使用 在其他任何地方 都可以实例化对象进行访问 在继承中,被public所修饰的成员能被所有的子类继承下来并使用。
protected:
同包情况下
在当前类中 main方法之外可以借助名称使用 在main方法中需要实例化对象使用 在同包的其他类中,可以用实例化对象访问使用 在同包的子类中,被protected修饰的成员可以被继承访问,也就是可以实例化父类或是子类的对象使用 在同包其他类中,且不是子类,要使用子类的类中,同一个包中,可以使用实例化父类或是子类的对象使用
不同包情况下
在不同包的其他类中,不可以用实例化对象访问使用 在不同包的其他子类中,被protected修饰的成员可以被继承访问,但是只能通过实例化子类对象使用。 在不同包的其他类中,且不是子类,要使用子类的类中,是不能通过例化子类对象调用父类的受保护成员的 因为这个时候相当于父类中的受保护成员跨包了。如果想要通过子类对象调用父类的受保护的成员,需要重新覆写父类的这个成员。 在实际的开发中也许很少用到protected来作访问控制,但是java的这个修饰符设计很巧妙,思想很高。同包中可以看做是public,异包中可以看做private
package/friendly/default
同一包中的所有类都能访问。所修饰的成员只能被该类所在同一个包中的子类所继承下来。 别的包中的子类是没法访问的。
总结