学习笔记(二)隐藏具体实现
2015-06-20 07:53
225 查看
《Java编程思想》整理的一些学习笔记,不喜勿喷。
1. 访问权限控制的等级,从最大权限到最下权限依次为:public,protected,包访问权限(没有关键词 or friendly),private。public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用。private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,即便是子类,包中其他类,都不可以使用。protected对于子类,包中其他类来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。包访问权限,在同一包中可以访问,如果不再同一包中,即使通过继承,也无法访问。
2. 命名包名时,一般通过利用反写域名来创建独一无二的包名,请注意,Java包的命名规则全部使用小写字母,包括中间的字也是如此。
3. 当导入具有相同类的不同包时,例如:
import com.bruceeckel.simple.*;
import java.util.*;
这两个包中都含有Vector类,这就存在潜在冲突。而现在要创建一个Vector类的话,就会产生冲突。
Vector v = new Vector();
编译器不知道该取用哪个Vector类,读者也不知道,于是就会报错,需要你强制明确指明,像这样:
java.util.Vector v = new java.util.Vector();
4.务必记住,无论何时创建包时,都已经在给定包的名称的时候隐含的指定了目录结构,这个包必须位于其名称所指定的目录之中,而该目录必须是在以CLLASSPATH开始的目录中可以查询到的。做到“包的名称对应目录路径”规则,不然将会收到许多出乎意料的运行时信息。
5. 缺省包,例子:
处于相同目录下的不同CLASS文件 Cake 和 Pie ,其中类定义为:
class Cake{ class Pie {
} }
此时Cake却可以使用Pie中的方法,这就很有意思了,之前我们说没有修饰词的类具有包访问权限,而包访问权限不可以访问外部类。之所以出现这样的情况是因为他们同处于相同的目录并且没有给自己设定任何包的名称。Java 将这样的文件自动看作是隶属于该目录的缺省包之中,于是它们为该目录中所有其他的文件都提供了包访问权限。
6. 每个编译单元(文件)都只能有一个public类。这表示,每个编译单元都有单一的公共接口,用public类来实现。该接口可以按要求包含众多的支持包访问权限的类(即可以有多个没有修饰词的类)。如果不想其他任何人对该类拥有访问权限,可以把所有的构造器都指定为private。从而阻止任何人创建该类的对象,但是,该类的static成员内部可以创建,例static A a = new A();
1. 访问权限控制的等级,从最大权限到最下权限依次为:public,protected,包访问权限(没有关键词 or friendly),private。public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用。private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,即便是子类,包中其他类,都不可以使用。protected对于子类,包中其他类来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。包访问权限,在同一包中可以访问,如果不再同一包中,即使通过继承,也无法访问。
2. 命名包名时,一般通过利用反写域名来创建独一无二的包名,请注意,Java包的命名规则全部使用小写字母,包括中间的字也是如此。
3. 当导入具有相同类的不同包时,例如:
import com.bruceeckel.simple.*;
import java.util.*;
这两个包中都含有Vector类,这就存在潜在冲突。而现在要创建一个Vector类的话,就会产生冲突。
Vector v = new Vector();
编译器不知道该取用哪个Vector类,读者也不知道,于是就会报错,需要你强制明确指明,像这样:
java.util.Vector v = new java.util.Vector();
4.务必记住,无论何时创建包时,都已经在给定包的名称的时候隐含的指定了目录结构,这个包必须位于其名称所指定的目录之中,而该目录必须是在以CLLASSPATH开始的目录中可以查询到的。做到“包的名称对应目录路径”规则,不然将会收到许多出乎意料的运行时信息。
5. 缺省包,例子:
处于相同目录下的不同CLASS文件 Cake 和 Pie ,其中类定义为:
class Cake{ class Pie {
} }
此时Cake却可以使用Pie中的方法,这就很有意思了,之前我们说没有修饰词的类具有包访问权限,而包访问权限不可以访问外部类。之所以出现这样的情况是因为他们同处于相同的目录并且没有给自己设定任何包的名称。Java 将这样的文件自动看作是隶属于该目录的缺省包之中,于是它们为该目录中所有其他的文件都提供了包访问权限。
6. 每个编译单元(文件)都只能有一个public类。这表示,每个编译单元都有单一的公共接口,用public类来实现。该接口可以按要求包含众多的支持包访问权限的类(即可以有多个没有修饰词的类)。如果不想其他任何人对该类拥有访问权限,可以把所有的构造器都指定为private。从而阻止任何人创建该类的对象,但是,该类的static成员内部可以创建,例static A a = new A();
相关文章推荐
- 我能读懂C++和Java但是读不懂Smalltalk
- 继承与组合
- Android 将自己的Launcher设置为默认启动
- 【OneAPM】极客编程挑战#023:使用HTML5画布生成渐变自由落体小球效果
- KD-Tree入门
- hdu1548A strange lift——最短路(迪杰斯特拉,spfa)。bfs(队列。数组)
- 越南三年级、8岁小学生做的数学难题
- Major OSL changes to catch up
- 换主页轮播的主题图片(1)---轻开电子商务系统(企业入门级B2C网站)
- 数据集的.FieldNo
- HTTP请求头的具体含意[转]
- UIView如何管理它的子视图
- 分享
- OSChina 周六乱弹 —— 你先跳,我吃完粽子再说
- 移动网盟竞价金矿:案例+技术+操作详细分析
- 从零开始学习jQuery
- IOS开发中(null)与<null>的处理
- linux安装rlwrap软件包
- 从源码安装automake
- Azure的Read-Access Geo-Redundant 存储备份