Class的访问权限:Java的访问权限也可以用来决定"程序库中哪些classes可以被程序库使用者所用",为classes设定的访问权限,可以控制客户端程序员或者说库使用者是否有权利产生某个class的对象。不过,这里还存在一些限制 1.每个编译单元(文件)都仅能有一个public class . 2.虽然通常不会这么做,但编译单元的确可以不含任何public class.这种情况下你可以任意给定文件名称.注重此时只要拿掉class定义前面的public 要害字即可,因为默认的是friendly,这表示同一个package内的其他classes能够乘胜该class的对象,而package之外则否.不过假如该class有某个static public 成员,那么客户端程序员即使无法生成该class的对象,仍然能够访问这个static成员. 3.class不能是private,protected的.(内隐类inner class除外).假如你不希望任何其他人取用某个class,请将其所有的构造函数申明为private,如此便可以阻止任何人产生其对象.惟有两个例外,class static成员中可以办到,继续类也可以办到.请看下面的例子: //Demonstrates class access specifiers. Make a class effectively private with private constrUCtors
class Soup{ private Soup(){} public static Soup makeSoup(){ return new Soup(); } } public class Lunch{ void test(){ // Can't do this ! Private constructor: // Soup priv1=new Soup(); Soup priv2=Soup.makeSoup(); } } class soup示范如何将所有构造函数都声明为private以防止直接产生某个class对象。 假如你希望在执行Soup之前先尽享某些额外处理,或希望记录(或限制)究竟有多少个Soup对象被产生出来,这种做法十分有用.