在初学java的时候,老师只是说,Java中有四种保护权限:
public 类内部 同包 子类 不同包的类
protected 类内部 同包 不同包的子类
default 类内部内 同包的所有类
private 除了包含该成员的类之外,其他任何类都 无法访问这个成员(类内部)
--------------------------------------------------------------------------------------------
但是,为什么要有这些访问权限?
java编程思想第四版中是这样写的:
(客户端程序员即我们这些用 大神写好的类 的程序员,类库设计者就是专门写类的人了)。
第一个原因是要设定客户端程序员可以使用和不可以使用的界限。可以在结果中建立自己的内部机制,而不必担心客户端程序员会偶然将内部机制当作是他们使用的部分接口。同时,这对于客户端程序员来说是一种服务,因为他们需要的只是调用他们需要的方法,而那些底层实现对他们来说其实是不重要的,这样可以简化他们对类的理解。
第二个原因,也是最重要的原因,是为了让类库设计者可以更改类的工作方式,而不会影响对客户端程序员产生重大影响。例如,最初类设计者以一个简单的方式实现了某个类,而后面发现有更好的方式可以实现,可以大大提高运行速度。如果接口和实现可以明确地隔离和加以保护,那么就可以实现这一目的,而不必强制客户端程序员重写代码。访问权限控制以确保不会有任何客户端程序员依赖于某个类的底层实现的任何部分。
---------------------------------------------------------------------------------------------------------
综上所述,用访问权限,对于初学者来说,其实用的时候可能用处不大,老师会说,都用public,但是到了后期,随着对java的深入了解,用的时候也还是老师说用,那就用。
但是,为了养成良好的习惯,还是可以将那些私密的,涉及底层的实现的方法或者变量设置为private,让调用者不能随意更改;在继承的时候,子类要用的就设置为protected,涉及底层的同样可以设为私有;而对于那些要给外面用的方法或成员设为public,毕竟写类就是为了给别人用啊。