java权限控制知识补充

java 访问权限控制知识补充

本博客参考《thinking in java》第6章, 省略了一些简单知识,补充了一下本人不熟易忘记的知识

  1. java解释器的运行过程如下:首先找出环境变量CLASSPATH,其中包括一个或者多个目录,用作查找.class文件的根目录;然后解释器获取包的名称并将每一个’.’替换为’\’(取决于你的操作系统),从而产生一个路径(例如foo.bar.baz 在windows下就会变成foo\bar\baz),这个路径会与你的CLASSPATH中的不同项相连接,于是解释器就会在这些目录下查找与你相关的类名称相关的class文件。

  2. 默认访问权限没有任何关键字,但通常是指包访问权限,这意味着当前的包中的所有其他类对那个成员都有访问权限,但是对于这个包之外的所有类,这个成员却是private的。

  3. 如果类的构造函数是private的,那么说明不可以通过构造器创建这个类的对象,这个方法可以运用于设计模式中的单例模式。
  4. 如果对类的某个成员使用了private关键字后,其他的任何类都无法访问这个成员,包括用一个包的其他类。
  5. 如果对类的某个成员使用protected关键字,那么对此成员的访问权限只是它的派生类而不是所有类,当然,protected提供包访问权限,即包中的其他类也可以访问protected元素。(注意,假设在包A中存在类Animal,此类方法有bite()方法,没有相关访问权限的关键字修饰它;假设包B中的Dog类继承Animal,那么Dog类中是可以使用bite()方法的,因为bite()方法实际上存在于Dog类中,但是请注意,包B中的其他类并不可以调用bite()方法)。
  6. 对于类的访问权限,仅有两个选择:包访问权限后者public。如果不希望其他任何人对该类拥有访问权限,那么可以将该类所有的构造器全部指定为private(当然,在该类的static成员中可以创建这个类对象)。根据此方法,可以写出设计模式中的单例模式:
    public class Soup{
    private Soup{}
    private static Soup p = new Soup();
    public static Soup getInstance(){return p;}
    }
  7. 如果没有能为类访问权限指定一个访问修饰符,那么它会默认得到包访问权限。同时,在相同目录下所有不具有明确package声明的文件,都会被视作该目录下默认包的一部分。然而,如果该类的某个static成员是public的话,则客户端还是可以调用该static成员,尽管他们并不能生成该类的对象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值