java属于访问控制的关键字,2.7.1 公开还是保密--访问控制关键字(1)

2.7.1  公开还是保密--访问控制关键字(1)

访问控制关键字就是在定义类的属性和方法等成员时,在它们定义的前面加的一些关键字。这些关键字可以决定后面所定义的类成员的访问情况,如是否可以被直接访问等。在这里先列出这几个关键字的内容,然后分别给大家介绍一下。它们分别是:default、public、protected、private。从字面意义上看,意思是默认的,公共的,受保护的,私有的。看到这些词就能大致猜到它们分别表示什么访问权限。下面来看一下在Java中具体是指的什么权限吧。

1.default--友好的

前面我们在定义类的内容时,在前面并没有加任何有关控制访问权限的关键字。这样也是可以的,Java会为所定义的属性赋予一个默认的访问控制权限,在有的书中也称为"友好的"。具有默认访问权限的属性和方法,是可以被同一个文件中其他的类直接访问的。就是说,前面我们所定义的类,它们的成员都可以通过"对象名.方法()"来直接使用。

2.public--公共的

public关键字是对访问限制最小的,或者说是不加任何限制的。前面用public标识的成员属性或是成员方法可以在其他任何地方被Java的任何类直接访问。用这个关键字来声明实际上是为了将后面要定义的属性或方法公开,而不是为了封装。只有用它来声明的内容才能保证在Java程序中的任何地方被任何其他类或对象直接使用。其他三种类型的权限都比它低,如果需要在其他的地方使用,前面一定要加上public关键字。

3.protected--保护的

保护类型的属性或方法性质和默认类型差不多,比默认类型的情况稍微严格一些。不过,作为初学者,可以先认为这两个情况是相同的。在本书后面的程序代码或其他示例代码中,不会遇到它们有差异的地方。如果有兴趣,可以自己再去查阅一些相关的材料,当然,等你已经不是初学者的时候再去查,到那时已经具备了足够的知识来了解它们之间的微妙差异。

4.private--私有的

前面介绍的实际上都不是严格意义上的封装,其他类都可以访问的内容不能称为封装。而且类的内容确实是可以被封装的,它靠的就是这个private关键字!这个关键字明确表示后面定义的内容为私有内容,其他不管什么类型,在什么地方都不可以访问到。在Java中,这个类型的保护是最严格的,类的内部数据如果不需要在别的地方使用,那么都会声明为这个类型。这样可以减少犯错误的机会,万一不小心修改了类的内部数据,那就惹麻烦啦。我们刚刚开始学编程,好的习惯是从一开始养成并保持的,一定要注意!

5.定义Java类

所有的访问权限控制关键字都一一向大家介绍过,这些类型的含义也都说清楚了,如果不举例说明一下,还是不能确定大家能理解得清楚、正确。下面来看一下下面的一个Java类定义吧:/* 定义一个立方体类——Cube */

class Cube {

int superficialColor;       // 此处为默认的权限类型

private double edgeLength;  // 变量棱长为私有类型,不能在类之外的地方访问

protected: double weight;   // 重量的访问类型为“保护类型”,类似于默认类型

public void setEdgeLength( double edge ) {

// 公共的方法,可以用来设置立方体的棱长

edgeedgeLength= edge;

return;

}

public double superficialArea() {

// 公共的方法,可以在任何地方计算此立方体的表面积

return 6*edgeLength*edgeLength;

}

}

在上面这段代码中,定义了一个立方体类。在这个类中出现了各种访问权限。现在为大家解释一下上面的代码。在类定义内容中的***行,前面没有加任何访问控制关键字,Java在定义立方体的表面积这个属性时,会使用默认的权限控制类型。这样的权限类型是可以在其他地方被使用的,但要注意仅限于同一个文件中。现在我们所有的Java代码都是在一个.java文件中,可以认为它是可以被其他类直接访问的。不过,并不鼓励大家在定义一个类的成员时前面不写访问权限控制的关键字。还是明确标示出类成员的访问权限比较好。前面是因为还没有提到这个问题,所以才没有加上。

后面的棱长是类Cube的私有成员,它只能被类Cube自己内部的方法使用。只要出了类Cube定义的大括号范围,私有变量就不能再被使用了。如果出现了直接使用私有成员的情况,Java会在编译的过程中报错,及早地阻止大家犯错误。这是Java的一个很好的特性。将属于对象私有的成员隐藏起来,使之不能被外界直接访问到,是类的封装特性的体现。前面已经介绍过这么做的好处,在此不再重复了。通过后面与这方面相关的例子,大家会慢慢体会到。

"重量"这个属性属于"受保护型"的成员,它的定义比较复杂,我们现在可以认为它在同一个文件中是能够被直接访问并使用的。大家认为它与"默认"的情况相同。不过,需要知道的是这个访问权限类型名称,虽然它看上去并没有对相应的成员进行有效"保护"。在以后更深入的学习中,就会遇到这个类型的更详细情况。到那时大家就能清楚它"保护"的范围了。

【责任编辑:book TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值