翁凯Java讲义概要(七)
<1>隐藏实施过成---访问控制
A primary consideration in objecdt-oriented design is "separating the things that change from the
things that stay the same.
"
两种人:1>创建类的人.2>用别人的类创造自己类的人.
每个库的用户(client programmer)必须能依赖自己使用的库,并知道一旦新版本的库推出,自己不需要改写代码.
<2>包:库单元
1>用import来引如包或包里的成员.
import java.util.*;
import java.util.Vector;
之所以要这样的引入,是为了提供一种特殊的机制,来实现命名空间的管理.
引入包机制来确定唯一的类.
2>编译单元
每个编译单元必须是以.java结尾的文件名称,在一个编译单元里,可以有一个public的类,这个类的名字必须与文件的名字相同.在一个单元内,只能有一个public的类.
3>编译一个.java文件时,对应于文件中的每一个类,会得到一.class文件,文件名与类的名字相同.一程序是一对.class文件.
4>定义包
一个库是一堆这样的.class文件,它们被定义为一个包,但是并不真真地合并在一个文件中.
package mypackage;
//声明一个包
public class MyClass;
现在,如果客户程序员想要用MyClass,就要用import来引入mypackage包,或者是使用MyClass的全名.
import mypackage;
MyClass m=new MyClass();
mypackage.MyClass m=new mypackage.MyClass();
5>CLASSPATH(环境变量)
将某个特定包使用的所有.class文件都放在一个目录下.
CLASSPATH包含一个或多个目录,它们作为一种特殊的根使用,从这里展开对.class的搜索.
-自动编译
-冲突
<3>类成员的访问属性
1>针对类内的每个成员的每个定义,java访问属性public,protectedprivate都放在它们的前面--无论是数据成员还是方法.
2>-
"friendly"(缺省包)
-public:界面访问(accessor/mutator)
-private:不能接触!
<4>类的访问控制
1>一个编译单元(文件)中只能有一个public的类.因此一个编译单元只有一个唯一的公共界面,其余的类都是
"frendly"的.public类的名字必须和文件的名字一样.
2>可见,尽管很少见,一个编译单元没有一个public类,所有的类都是
"friendly"的,那么文件名可以任意起.
//Lunch.java
//Demonstrates class access specifiers.
//Make a class effectively private
//with private constructor:
class Soup{
private Soup(){}
//(1)Allow creation via static method:
public static Soup makeSoup(){
return new Soup();
}
//(2)Create a static object and
//return a reference upon request.
//(The "Singleton" pattern):


-protected:
"某种友好"(同一包中的类和子类能访问)


lunzi   2005-10-21 18:50:04 评论:0   阅读:1428   引用:0

发表评论>>

署名发表(评论可管理,不必输入下面的姓名)

姓名:

主题:

内容: 最少15个,最长1000个字符

验证码: (如不清楚,请刷新)

Copyright@2004-2010 powered by YuLog