Think in Java 第六章(访问权限控制)

2018-09-21  本文已影响0人  咱就一山里人
信仰
6.1 包:库单元

当编写一个Java源码文件时,此文件被称为编译单元。每个编译单元都必须有一个后缀名.java,在编译单元内可以有一个public类,该类的名称必须与源文件名称相同。每个编译单元只能有一个public类,否则编译器不会接受,编译单元内的其他类为public类提供支持。


6.2 访问权限修饰符

public protected和privaate这几个Java访问权限修饰词在使用时,是置于类中每个成员定义之前的无论它是一个域还是一个方法。
如果不修饰默认包访问权限。


对某成员访问的唯一途径:
1> 使该成员为public。于是,无论是谁,无论在哪里,都可以访问成员。
2>通过不加访问权限修饰词并将其他类置于同一个包内的方式给成员赋予包访问权。于是包内的其他类都可以访问该成员。


class Sundae{
 private Sundae(){}
 static Sundae makeASundae(){return new Sundae();}
}

这是一个控制如何创建对象,并阻止别人直接访问某个特定的构造器(或全部构造器)。

6.3 接口的实现

推荐public成员置于开头,后面跟着protected、包访问权限和private成员的创建类的形式。这样做的好处是类的使用者可以从头读起,首先阅读对他们而言最为重要的部分,等到遇见作为内部实现细节的非public成员时停止阅读。

6.4 类的访问权限

类即不可以是private的也不可以是protected的。所以对于类的访问权限仅有两个选择:宝访问权限或public。如果不希望其他任何人对该类有用访问权限,可以吧构造器都指定为private,从而阻止创建对象,但是有一个例外,就是你在该类的static成员内部创建。

//可以记录创建多少个对象,或是做一些额外的工作
class Soup1(){
  private static soup1 makeSoup{return new Soup1(); }
}
//始终创建一个对象 单利
class Soup2(){
  private static soup2  s= new Soup2();
  public static Soup2 access(){return s;}
  public void f(){}

上一篇 下一篇

猜你喜欢

热点阅读