java的private要害字
private要害字意味着除非谁人特定的类,并且从谁人类的要领里,不然没有人能会见谁人成员。同一个包内的其他成员不能会见private成员,这使其显得好像将类与我们本身都断绝起来。另一方面,也不能由几个相助的人建设一个包。所以private答允我们自由地改变谁人成员,同时毋需体贴它是否会影响同一个包内的另一个类。默认的“友好”包会见凡是已经是一种适当的埋没要领;请记着,对付包的用户来说,是不能会见一个“友好”成员的。这种结果往往能令人满足,因为默认会见是我们凡是回收的要领。对付但愿酿成public(民众)的成员,我们凡是明晰地指出,令其可由客户措施员自由挪用。并且作为一个功效,最开始的时候凡是会认为本身不必频繁利用private要害字,因为完全可以在不消它的前提下宣布本身的代码(这与C++是个光鲜的比拟)。然而,跟着进修的深入,各人就会发明private仍然有很是重要的用途,出格是在涉及多线程处理惩罚的时候(详情见第14章)。
下面是应用了private的一个例子:
//: IceCream.java // Demonstrates "private" keyword class Sundae { private Sundae() {} static Sundae makeASundae() { return new Sundae(); } } public class IceCream { public static void main(String[] args) { //! Sundae x = new Sundae(); Sundae x = Sundae.makeASundae(); } } ///:~
这个例子向我们证明白利用private的利便:有时大概想节制工具的建设方法,并防备有人直接会见一个特定的构建器(可能所有构建器)。在上面的例子中,我们不行通过它的构建器建设一个Sundae工具;相反,必需挪用makeASundae()要领来实现(注释③)。
③:此时还会发生另一个影响:由于默认构建器是独一得到界说的,并且它的属性是private,所以可防备对这个类的担任(这是第6章要重点报告的主题)。
若确定一个类只有一个“助手”要领,那么对付任何要领来说,都可以把它们设为private,从而担保本身不会误在包内其他处所利用它,防备本身变动或删除要领。将一个要领的属性设为private后,可担保本身一直保持这一选项(然而,若一个句柄被设为private,并不表白其他工具不能拥有指向同一个工具的public句柄。有关“别名”的问题将在第12章详述)。