JAVA编程思想学习总结:第六章——访问权限控制
2015-03-31 20:34
253 查看
/*此总结的主要内容是我在学习JAVA过程中,认为需要记忆的知识点。并结合之前自己学习C++及javascript的相关知识,注明JAVA在一些情况下与这两门语言的相同及不同之处。*/
利用package和import关键字将单一的全局名字空间分割开。
package语句必须是文件中的第一行非注释程序代码。
从根目录开始,解释器获取包名称并将每个句点替换成反斜杠,得到 路径会与CLASSPATH中的各个不同的项相连接,解释器就在这些目录中查找与所要创建的类名称相关的.class文件(包括java解释器所在位置的标准目录)。
如果两个不同的包被同时引用,且包含相同的类名,在引用该类时,在类名前带包名可以解决该同名问题。
忠告:无论何时创建包,都已经在给定包的名称的时候隐含地指定了目录结构。这个包必须位于其名称所指定的目录中,而该目录必须是在以CLASSPATH开始的目录中可以查询到的。
默认包:如果类没有给自己设定任何包名称,java将这样的文件自动看作隶属于该目录的默认包中,它为该目录中所有其他的文件都提供了包访问权限。
private:私有访问权限。仅该类本身的成员可以使用private成员。
protected:继承访问权限。对该类的子类也可见,同时也提供包访问权限。
对构造函数使用private可以阻止别人直接访问某个特定的构造器。如果默认构造器是唯一定义的构造器,并且是private,它将阻止此类的继承。
访问权限的控制其实就是下表。
2、public类的名称必须完全与含有该编译单元的文件名相匹配,包括大小写。
3、编译单元内允许不带public类。
类既不可以是private的(这样会使得除该类之外,其他任何类都不可以访问它),也不可以是protected(该条限制对内部类除外)。所以对于类的访问权限,仅有两个选择:包访问权限或public。如果不希望任何人对该类拥有访问权限,可以把所有构造器指定为private,从而阻止任何人创建该类的对象,但是有一个例外,就是你在该类的static成员内部可以创建。
示例如下:
(1)包
类库实际上是一组类文件。其中每个文件都有一个public类,以及任意数量的非public类。因此每个文件都有一个构件。如果希望这些构件从属于同一个群组,就可以使用包。利用package和import关键字将单一的全局名字空间分割开。
package语句必须是文件中的第一行非注释程序代码。
从根目录开始,解释器获取包名称并将每个句点替换成反斜杠,得到 路径会与CLASSPATH中的各个不同的项相连接,解释器就在这些目录中查找与所要创建的类名称相关的.class文件(包括java解释器所在位置的标准目录)。
如果两个不同的包被同时引用,且包含相同的类名,在引用该类时,在类名前带包名可以解决该同名问题。
忠告:无论何时创建包,都已经在给定包的名称的时候隐含地指定了目录结构。这个包必须位于其名称所指定的目录中,而该目录必须是在以CLASSPATH开始的目录中可以查询到的。
(2)权限修饰词
public:接口访问权限。其成员声明对每个人可用。默认包:如果类没有给自己设定任何包名称,java将这样的文件自动看作隶属于该目录的默认包中,它为该目录中所有其他的文件都提供了包访问权限。
private:私有访问权限。仅该类本身的成员可以使用private成员。
protected:继承访问权限。对该类的子类也可见,同时也提供包访问权限。
对构造函数使用private可以阻止别人直接访问某个特定的构造器。如果默认构造器是唯一定义的构造器,并且是private,它将阻止此类的继承。
访问权限的控制其实就是下表。
同一个类 | 同一个包 | 不同包的子类 | 不同包的非子类 | |
Private | √ | |||
Default | √ | √ | ||
Protected | √ | √ | √ | |
Public | √ | √ | √ | √ |
(3)类的访问权限
1、每个编译单元都只能有一个public类。2、public类的名称必须完全与含有该编译单元的文件名相匹配,包括大小写。
3、编译单元内允许不带public类。
类既不可以是private的(这样会使得除该类之外,其他任何类都不可以访问它),也不可以是protected(该条限制对内部类除外)。所以对于类的访问权限,仅有两个选择:包访问权限或public。如果不希望任何人对该类拥有访问权限,可以把所有构造器指定为private,从而阻止任何人创建该类的对象,但是有一个例外,就是你在该类的static成员内部可以创建。
示例如下:
package accessControl; class Soup1{ private Soup1(){}; public static Soup1 makeSoup(){//静态方法创建对象并返回,可以用来在返回引用之前做额外的工作。 return new Soup1(); } } class Soup2{ private Soup2(){} private static Soup2 ps1=new Soup2(); public static Soup2 access(){//这种特定的模式被称为singleton(单例),因为只能创建它的一个对象,只能通过静态public方法访问 return ps1; } public void f(){} } public class Lunch { void testPrivate(){ //无法直接创建对象 //Soup1 soup =new Soup1(); } void testStatic(){ Soup1 soup =Soup1.makeSoup(); } void testSingleton(){ Soup2.access().f(); } }
相关文章推荐
- Java编程思想——第六章 访问权限控制 学习总结
- java编程思想---第六章(访问权限控制)
- java 编程思想第六章个人总结---访问权限控制
- Java编程思想学习笔记六:访问权限控制
- Java 编程思想(第四版)学习笔记(6)访问权限控制
- 【java编程思想--学习笔记(三)】访问控制-接口实现与类的访问权限
- 《Java 编程思想》--第六章:访问权限控制
- Java编程思想笔记——访问权限控制
- 重读java编程思想之访问权限控制二
- Java编程思想 - 第6章、访问权限控制
- Java编程思想 第6章 访问权限控制
- [学习笔记][Java编程思想]第6章:访问权限控制
- JAVA编程思想笔记【突击1】——初始化,访问权限控制,继承,多态
- JAVA编程思想-第六章 访问权限控制
- Java编程思想(三) —— 访问权限的控制
- Java编程思想 4th 第6章 访问权限控制
- JAVA编程思想 初学者 访问权限控制6
- java编程思想(初始化与清理,访问权限控制,复用类,多态,接口,内部类)
- Java编程思想笔记——第六章 访问权限控制
- JAVA编程思想笔记【突击1】——初始化,访问权限控制,继承,多态