private: 你不可以去碰!

关键字 private 的意思是,除了包含该成员的类之外,其他任何类都是无法访问这个成员

的。由于处于同一个包内的其他类是不可以访问 private 成员的,因此这等于说是自己隔

离了自己。从另一方面说,让许多人共同合作来创建一个包也是不大可能的,为此 private

就允许你随意改变该成员,而不必考虑这样做是否会影响到包内其他的类。

 

缺省的包访问权限通常已经提供了充足的隐藏措施。请记住,使用类的客户端程序员是无法

访问包访问权限成员的。这样做很好,因为缺省访问权限是一种我们经常使用的权限,同时

也是一种在你忘记添加任何访问权限控制时能够自动得到的权限。因此,你通常会考虑哪些

成员是想要明确公开给客户端程序员使用的,从而将它们声明为 public,而在最初,你可

能不会认为你会需要使用关键字 private,因为没有它,照样可以工作。(这在 C++之中

是截然相反的。)然而,事实很快就会证明,对 private 的使用是多么的重要,在多线程

环境(multithreading)下更是如此。(正如你在第 13 章中将会看到的一样。)

 

此处有一个使用private 的示例。

 

//:c05:IceCream.java

//Demonstrates "private" keyword.

 

class Sundae {

private Sundae() {}

static SundaemakeASundae() {

return new Sundae();

    }

}

 

public class IceCream {

public staticvoid main(String[]args) {

//! Sundae x =new Sundae();

    Sundae x = Sundae.makeASundae();

    }


///:~

 

这是一个说明private终有其用的示例:你可能想要控制如何去创建对象,并阻止别人直接

访问某个特定的构造器(或是全部构造器)。在上面的例子中,你不能通过构造器来创建

Sundae对象,而必须调用makeASundae( )方法来达到此目的。3

 

任何你确认为只是该类的一个“助手”方法的方法,你都可以把它指定为 private,以确保

你不会在包内的其他地方误用到它,于是也就防止了你会去改变或是删除这个方法。将方法

指定为 private 确保了你拥有这种选择权。

 

这对于类中的private 域同样适用。除非你必须公开底层实现细目(此种境况很少见),

否则你就应该将所有的域指定为 private。然而,不能因为在类中某个对象的引用是

private,就认为其他的对象无法拥有该对象的 public 引用。(参见附录 A 中关于别名

机制的讨论)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值