Java中的public、protected、default和private的区别

来源:互联网 发布:软件开发语言培训 编辑:程序博客网 时间:2024/06/14 09:09

(1)对于public修饰符,它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。

(2)对于protected修饰符,它主要的作用就是用来保护子类的。它的含义在于子类可以用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西。

(3)对于default来说,有的时候也成为friendly(友员),它是针对本包访问而设计的,任何处于本包下的类、接口、异常等,都可以相互访问。

(4)对于private来说,它的访问权限仅限于类的内部,是一种封装的体现,例如,大多数的成员变量都是修饰符为private的,它们不希望被其他任何外部的类访问。

 

  列表形式展示如下:


                                                                  作用域       当前类    同一package   子孙类     其他package
 
                                                                   public            √                 √                  √                 √


                                                                protected         √                 √                   √                 ×


                                                                   friendly         √                 √                   ×                 ×

                                                                   private          √                 ×                   ×                 ×


Java语言定义了public、protected、private、abstract、static和final这6常用修饰
词外还定义了5个不太常用的修饰词,下面是对这11个Java修饰词的介绍:
1.public
使用对象:类、接口、成员
介绍:无论它所处在的包定义在哪,该类(接口、成员)都是可访问的
2.private
使用对象:成员
介绍:成员只可以在定义它的类中被访问
3.static
使用对象:类、方法、字段、初始化函数
介绍:成名为static的内部类是一个顶级类,它和包含类的成员是不相关的。静态方法
是类方法,
是被指向到所属的类而不是类的实例。静态字段是类字段,无论该字段所在的类创建了
多少实例,该字
段只存在一个实例被指向到所属的类而不是类的实例。初始化函数是在装载类时执行
的,而不是在创建
实例时执行的。
4.final
使用对象:类、方法、字段、变量
介绍:被定义成final的类不允许出现子类,不能被覆盖(不应用于动态查询),字段值
不允许被
修改。
5.abstract
使用对象:类、接口、方法
介绍:类中包括没有实现的方法,不能被实例化。如果是一个abstract方法,则方法体
为空,该方
法的实现在子类中被定义,并且包含一个abstract方法的类必须是一个abstract类
6.protected
使用对象:成员
介绍:成员只能在定义它的包中被访问,如果在其他包中被访问,则实现这个方法的类
必须是该成
员所属类的子类。
7.native
使用对象:成员
介绍:与操作平台相关,定义时并不定义其方法,方法的实现被一个外部的库实现。
8.strictfp
使用对象:类、方法
介绍:strictfp修饰的类中所有的方法都隐藏了strictfp修饰词,方法执行的所有浮点
计算遵守
IEEE   754标准,所有取值包括中间的结果都必须表示为float或double类型,而不能利用
由本地平台浮
点格式或硬件提供的额外精度或表示范围。
9.synchronized
使用对象:方法
介绍:对于一个静态的方法,在执行之前jvm把它所在的类锁定;对于一个非静态类的方
法,执行
前把某个特定对象实例锁定。
10.volatile
使用对象:字段
介绍:因为异步线程可以访问字段,所以有些优化操作是一定不能作用在字段上的。
volatile有时
可以代替synchronized。
11.transient
使用对象:字段
介绍:字段不是对象持久状态的一部分,不应该把字段和对象一起串起。

0 0
原创粉丝点击