51代码网ORACLEMYSQLSQL SERVER其它数据库java/jspasp/asp.netC/C++/VC++APP应用其它语言服务器应用
您现在的位置: 51代码网 >> java >> 文章正文

Java修饰符总结private | default |protected| public

更新时间:2012-2-15:  来源:51代码网

private 表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有的,只对本类可见
不能通过对象点的方式访问数据
现在来说说为什么要把数据定义为私有
把数据定义为私有通过公有方法来访问数据,这是一个规范

public 表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用,对一切可见
如果在类的修饰符中用了public,那个类的名字必须和你的文件名一致
一个.java的源文件中 一般有且只有一个public的类

protected 对于子类、同级类来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private,对所有子类和本包可见(当前目录中类,子目录不行)

default 默认值 (不用访问修饰符时) 对本包可见


类的访问控制修饰符只能是public或者没有修饰符(即默认的访问控制符),默认的访问控制符的含义是在同一个包内形如public可被任意调用,但是对另一个包的类则是不可见的..
main()是整个程序的入口,需要被java虚拟机调用。如果是非public的话对虚拟机是不可见的。

|              | private | default |protected| public  |
| 同一类中成员 |   是    |   是    |   是    |   是    |
| 同一包中成员 |   否    |   是    |   是    |   是    |
| 不同包中子类 |   否    |   否    |   是    |   是    |
|不同包中非子类|   否    |   否    |   否    |   是    |


|        修饰符      |  类  |成员访求|构造方法|成员变量|局部变量|
|   abstract 抽象的  |  √  |   √   |   -   |   -   |   -   |
|    static 静态的   |  -  |   √   |   -   |   √   |   -   |
|    public 公共的   |  √  |   √   |   √   |   √   |   -   |
| protected 受保护的 |      |   √   |   √   |   √   |   -   |
|   private 私有的   |  -  |   √   |   √   |   √   |   -   |
|synchronized 同步的 |  -  |   √   |   -   |   -   |   -   |
|    native 本地的   |  -  |   √   |   -   |   -   |   -   |
|  transient 暂时的  |  -  |   -   |   -   |   √   |   -   |
|   volatie 易失的   |  -  |   -   |   -   |   √   |   -   |
|  final 不要改变的  |  √  |   √   |   -   |   √   |   √   |

类修饰符
Public    可以从其他类中访问
obstract  本类不能被实例化
final     不能再声明子类
构造器修饰符
Public    可以从所有的类中访问
Protected 只能从自己的类和它的子类中访问
Private   只能在本类中访问
域修饰符
Public    可以从所有的类中访问
Protected 只能从本类和它的子类中访问
Private   只能从本类中访问它
Static    对该类的所有实例只能有一个域值存在
transient 不是一个对象持久状态的一部份
Volatile  可以被异步的线程所修改
final     必须对它赋予初值并且不能修改它
局部变量修饰符
final     必须对它赋予初值并且不能修改它
方法修饰符
Public    可以从所有的类中访问它
Protected 只能从本类及其子类中访问它
Private   只能从本类中访问它
abstract  没有方法体,属于一个抽象类
final     子类不能覆盖它
static    被绑定于类本身而不是类的实例
native    该方法由其他编程语言实现
asnchronized     在一个线程调用它之前必须先给它加

 

JAVA修饰符类型解释
public的类、类属变量及方法,包内及包外的任何类均可以访问;

protected的类、类属变量及方法,包内的任何类,及包外的那些继承了此类的子类才能访问;

private的类、类属变量及方法,包内包外的任何类均不能访问;

如果一个类、类属变量及方法不以这三种修饰符来修饰,那么包内的任何类都可以访问它,而包外的任何类

都不能访问它(包括包外继承了此类的子类),因此,这类、类属变量及方法对包内的其他类是友好的,开放的,而对包外的其他类是关闭的。

abstract:抽象修饰符

用abstract修饰的类表示抽象类,抽象类不能被实例化,用abstract修饰的方法表示抽象方法,抽象方法没有方法体。

final:不可继承,不可变量修饰符

      java中修饰符final可以分别作用于类,方法和域。

      final类。定义类的时候加上final修饰符,表明该类已经是相当完善了,不用也不能被其它类所继承,也就是说,该类在java的继承树结构中是一个叶节点。当一个类为final类时,该类的所有方法均自动成为final方法,不管你是否在方法前面加上修饰符final。而该类中的域可以通过加上final将其声明为一个final变量,也可以不加,声明为一般变量。一个类是否为final类,对该类的域是不产生任何影响的。

      final方法。方法加上修饰符final可以将方法声明为一个final方法。final方法的作用有两个:其一,使该方法不能被子类覆盖或者改写。其二,提示编译器把对此方法的调用方式改成内联调用的方式,以提高执行效率。必须注意的是,如果final方法的方法体很大,此举会大大增加最终代码的体积,因此使用的时候要权衡二者的利弊。

    final域。final域一旦赋值后将永远不变,因此非常适合用来定义常量。值得注意的是:如果final域是一个基本类型,那么表明改域的值是不能改变的。若final域是一个对象的引用,则仅仅表明改引用不能被改变,也就是永远指向同一个对象,但是被引用的对象自身却是可以改变的。这跟c++中的常量指针很像(不是指向常量的指针)。初始化final域有着特殊的要求:非静态final域要求在构造函数执行后必须被明确赋值,而静态final域在类初始化完成后必须要被明确赋值。

interface:接口修饰符

native:本地方法修饰符(JNI里会用来生成C++的函数类库)

static:静态修饰符

strictfp:精确浮点运算修饰符

synchronized:线程同步修饰符

transient:进行序列化时不必传送修饰符,修饰一些不可持久化属性。

volatile:多线程中修饰共享数据,保证共享。

  • 上一篇文章:
  • 下一篇文章: 没有了
  • 赞助商链接
    推荐文章
  • 此栏目下没有推荐文章
  • {
    设为首页 | 加入收藏 | 友情链接 | 网站地图 | 联系站长 |