java语言修饰符$_Java语言中的修饰符

Java语言共提供了10种修饰符,分别为public、protected、private、final、static、abstract、synchronized、transient、volatile、native。 native修饰符 nvative关键字只能用于修饰方法,在一个方法前面加上native修饰符即表明该方法为一个本地方法,本地方

Java语言共提供了10种修饰符,分别为public、protected、private、final、static、abstract、synchronized、transient、volatile、native。

native修饰符

nvative关键字只能用于修饰方法,在一个方法前面加上native修饰符即表明该方法为一个本地方法,本地方法的主要目的是利用本地资源扩展Java功能,而与Java本身的机制无关。

一个本地 方法如同一个抽象方法,并没有实际的方法体,因为本地方法的实现不是Java语言,而是采用依赖本地平台的其他语言编写的位于JVM之外的函数库中,具体的函数库可以通过System.loadLibrary()方法装入。System.loadLibrary()方法通常放置在静态初始化块中。如果本地方法方法没有装载成功,则抛出UnsatisfiedLinkError异常。

对本地方法的调用如同调用Java中的其它方法一样,本地方法的实现对调用者是透明的。关于本地方法的应用,可参见Object类,其中定义了大量的本地方法,例如hashCode()、clone()等方法。关于实际的应用介绍,可参考以下文章:http://www.codesky.net/article/200505/63703.html。

transient修饰符

transient关键字只能用于修饰变量,而不能修饰类与方法,被transient关键字修饰的变量将不能被序列化,即它不再是对象的持久状态的一部分,它的内容在序列化后无法获得访问。 transient关键字的作用是保证变量的安全性,即使是私有变量,一经序列化处理,就可以通过读取一个文件,或者拦截网络传输得到它。

在Java中,对象的序列化可以通过实现两种接口来实现:一是实现Serializable对象,则所有的序列化将会自动进行,此时若变量使用transient关键字修饰,则该变量无法被序列化;另一个是实现Externalizable接口,则没有任何东西可以自动序列化,需要在writeExternal方法中进行手工指定所要序列化的变量,这与是否被transient修饰无关。

synchronized修饰符

synchronized关键字只能用于修饰方法(构造方法除外 )或方法的一部分(代码块),不能用于修饰类和变量。

synchronized关键字用于在两个线程同时试图访问某一数据时避免数据损毁。每个对象都包含了一把锁,它自动成为对象的一部分,不必为此写特殊的代码。调用任何被声明为同步的方法时,对象就会被锁定,不可再调用该对象上的其它任何同步方法,除非第一个方法完成结束,并解除锁定。搞清楚synchronized锁定的是哪个对象,才能帮助我们设计出安全的多线程程序。

详细介绍,可参考此文章:http://blog.csdn.net/soartju/article/details/2840491

static修饰符

static关键字不能用于修饰顶层类,可以修饰方法、属性、块。该关键字表明所修饰对象属于类,而不属于类实例,即修饰对象附属于类本身,而不是各个类实例。

静态属性,有两种引用方式,一是使用类名引用;另一种是通过类实例引用。当采用后者时,编译器会出现警告,虽然不会发生错误,当编译器告诉你应该用静态的方式调用静态属性。

静态方法,在一个静态方法里只能使用方法体内声明的变量以及静态变量。一个静态方法不能调用一个非静态方法,反之则可以。究其原因,非静态方法的调用是在运行时决定的,而静态方法的调用是在编译期决定的。一个静态方法不能被子类重写,即不能将父类的静态重写为子类的非静态方法,也不能将父类的非静态方法重写为子类的静态方法,如果父类及子类有一个相同签名的静态方法,两者的方法各自独立。

静态代码块,主要用于初始化某些信息,该代码块中代码仅执行一次,即首次装载类时被执行了。

final修饰符

final关键字用于类、方法、变量前,表明该关键字的对象具有不可变的特性。

final关键字用于修饰基本数据类型变量时,表明该变量为一个常量,其值在以后的使用中,只能被读取而不能被改变,并且该变量在声明时必须被初始化,否则会产生变异错误。

final关键字用于修饰引用类型变量时,同修饰基本数据类型变量一样,一旦被分配给一个值就不能改变,即不能再引用其它对象。但是可以改变引用对象的内容。

final关键字用于修饰方法时,表明该方法不能被子类重写。

final关键字用于修饰类时,表明该类不能再被扩展,即不能被其它类继承。因为被声明为final类,其所有方法都默认为final。如API里的String类就是final类。

abstract修饰符

abstract关键字只能用于修饰类和方法,不能修饰变量,因为该关键字表明的是未实现的含义,变量不存在未实现的概念。

抽象方法前面只能是访问修饰符,public或是protected。

一个抽象类里可以不存在抽象方法,即使如此,也不可实例化该类;若一个类里包含至少一个抽象方法,该类必须声明为抽象类,否则会报编译错误。

子类继承一个抽象类时,可以实现父类中所有的抽象方法,如有未实现的,子类必须声明为抽象类。

实现类实现一个接口时,必须实现接口里所有的方法,如有未实现的,该实现类必须声明为抽象类。

访问修饰符

Java语言提供了3种用来控制访问权限的访问修饰符,分别是public、protected、private,除此之外,又有一种不加任何修饰符的默认访问模式。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值