天天看点

java修饰符概述

<b>修饰符</b>

<b>修饰的部件</b><b></b>

<b>描述</b>

abstract

class 

interface 

method

不能初始化,含有尚未实现的方法 

所有接口都是抽象的. 声明接口时可选是否添加abstract 

不能修饰构造器,只能修饰普通方法. 内部类就是抽象的

final

method 

field 

variable

不能被继承,即没有子类 

不能被重写,可以动态查找 

不能修改其值. static final fields 定义常量 

不能修改其值(variable指局部变量)

平台方法. 不修饰构造器,只修饰普通方法

none(package)

member

只能是同一包的下类才能访问 

只能是同一包的下类才能访问

private

只能够被当前类访问

protected

可被子类或同一包下的类访问

public

可以被所有类访问 

可以被所有类访问

strictfp

所修饰的类里方法都需要遵从严格的浮点运算 

该方法中所有的float和double表达式都严格遵守FP-strict的限制,符合IEEE-754规范。这个比较少用

static

initializer

可是一个内部类变为外部类 

可直接通过方法名调用此方法 

修饰field时,表面此field不属于类的实例 

在此类被加载时就开始运行,而不是等到类被创建时才运行

synchronized

对于静态方法,在方法执行前需要为类添加一个锁;

对于非静态方法,在执行之前需要为类实例添加一个锁。

transient

field

在对象序列化时不需要持久化

volatile

可被异步线程访问,很少会用到

一个方法的定义,其访问修饰符只能是public,、protected 、 private当中一个

不能同时使用abstract和final修饰一个class

抽象方法不能被定义为private, static, final, native, strictfp 或 synchronized

不能同时使用native和strictfp修饰一个方法

abstract 和 native 修饰的方法没有方法体

abstract void<code> method();</code>

native void<code> method();</code>

当一个类包含abstract方法时,此类必须定义为abstract

<b>以下给出修饰符可修饰的各种类型</b><b></b>

<b>类</b>

<b>变量</b>

<b>方法</b>

<b>构造器</b>

<b>自由块</b>

none or package or default

native

在网络上同样看到了一些比较好的总结,这里列出来给大家参考一下,

<b>一、 </b><b>类的访问控制修饰符</b><b>(</b><b>非内部类</b><b>)</b>

修饰符

默认修饰符

作用

任何地方都能访问

包访问权限:包内可以访问,包外无法访问

<b></b>

<b>二、 </b><b>类的特性修饰符互斥与兼容</b><b>(</b><b>非内部类</b><b>)</b>

类不可派生

类需要被继承

类中采用严格精确浮点运算

——

<b>三、 </b><b>类的成员访问控制修饰符</b><b></b>

作用范围

包外

子类

包内

类内

<b>四、 </b><b>类的成员变量特性修饰符</b><b></b>

不可变更

单一拷贝

共享内存

瞬时的

<b>五、 </b><b>类的成员方法特性修饰符</b><b></b>

构造器

本文转自peiquan 51CTO博客,原文链接:http://blog.51cto.com/peiquan/1298446