java中的修饰符分为类修饰符,字段修饰符,方法修饰符。根据功能的不同,主要分为以下五种。
1、权限访问修饰符
public,protected,default,private,这四种级别的修饰符都可以用来修饰类、方法和字段。
2、final修饰符
final的意思是不可变,他可以修饰类、字段、方法。修饰类后类不能被扩展(extends),也就是不能被继承。修饰字段后字段的值不能被改变,因此如果有final修饰字段,应该对字段进行手动初始化。修饰方法后该方法不能被改变,也就是重写。
3、abstract修饰符
abstract是抽象的意思,用来修饰类和方法,修饰类后,该类为抽象类,不能被实例化,必需进行扩展。修饰方法后,该方法为抽象方法必须被子类重写(override)。
4、static修饰符
static用来修饰内部类,方法,字段。修饰内部类说明该内部类属于外部类而不属于外部类的某个实例。修饰字段说明该字段属于类而不属于类实例。修饰方法说明该方法属于类而不属于类实例
5、volatile修饰符
易失 ( 共享 ) 域修饰符 volatile 是用来说明这个成员变量可能被几个线程所控制和修改。也就是说在程序运行过程中,这个成员变量有可能被其它的程序影响或改变它的取值。
扩展资料:
修饰符的特点:
static是一个修饰符,用于修饰成员(成员变量和成员函数)
静态成员随着类的加载而加载。静态成员优先于对象存在。静态成员被所有对象所共享静态成员多了一个中调用方式,可以被类名直接调用。
使用的注意事项:
静态方法只能访问静态成员, 非静态方法既可以访问静态又可以访问非静态。静态方法中不可以定义this,super关键字。因为this代表是对象。而静态存在时,有可能没有对象。所以静态方法运行时,this是没有任何对象代表的。
简单说,先进内存的数据不可以访问后进内存的数据,可是后进内存数据可以访问先进内存的数据。主函数是静态的。
类修饰符
Public
可以从其他类中访问
obstract
本类不能被实例化
final
不能再声明子类
构造器修饰符
Public
可以从所有的类中访问
Protected
只能从自己的类和它的子类中访问
Private
只能在本类中访问
域修饰符
Public
可以从所有的类中访问
Protected
只能从本类和它的子类中访问
Private
只能从本类中访问它
Static
对该类的所有实例只能有一个域值存在
transient
不是一个对象持久状态的一部份
Volatile
可以被异步的线程所修改
final
必须对它赋予初值并且不能修改它
局部变量修饰符
final
必须对它赋予初值并且不能修改它
方法修饰符
Public
可以从所有的类中访问它
Protected
只能从本类及其子类中访问它
Private
只能从本类中访问它
abstract
没有方法体,属于一个抽象类
final
子类不能覆盖它
static
被绑定于类本身而不是类的实例
native
该方法由其他编程语言实现
asnchronized
在一个线程调用它之前必须先给它加
一,非访问修饰符。
1, 抽象类: 凡是用abstract修饰符修饰的类被称为抽象类。抽象类就是没有具体对象的概念类。
抽象类是一种经过优化的概念组织方式:把共同特点抽象出来;其后在描述和处理某一种具体对象时,就只需描述不同的特殊之处。这种组织方式使得所有的概念层次分明,简洁洗练,非常符合人们日常的思维习惯。
由于抽象类是它的所有子类的公共属性的集合,所以使用抽象类的一个优点就是可以充分利用这些公共属性来提高开发和维护程序的效率。 值得一提的是,面向对象技术是要用更接近于人类思维方式的方法来处理实际问题,抽象类的设立就是这种思想的具体体现之一,它是模仿人类的思维模式的产物。
2,最终类: 如果一个类被final修饰符所修饰和限定,说明这个类不可能有子类。 被定义为final的类通常是一些有固定作用、用来完成某种标准功能的类。
如Java系统定义好的用来实现网络功能的InterAddress、Socket等类都是final类。 abstract和final修饰符不能同时修饰一个类,因为abstract类自身没有具体对象,需要派生出子类后在创建子类的对象;而final类不可能有子类。
这样放在一起修饰就没有意义了。 3,有些类的修饰符也可以用来修饰类中的域或方法: (1) 域:是类和对象的静态属性,定义域的操作就是说明变量或创建对象的操作。
静态域: 用static修饰符修饰的域是仅属于类的静态域。静态域是类中每个对象共享的域。
他们是类的域,不属于任何一个类的具体对象。是一个公共的存储单元,任何一个类的对象访问它时,取到的都是相同的数值。
静态初始化器: 静态初始化器是由关键字static引导的一对大括号括起的语句组。作用是:在加载时,初始化类的静态域。
与构造函数相同,他们都是用来完成初始化的工作,但是静态初始化器与构造函数有三点不同: ①构造函数是对每个新创建的对象初始化,而静态初始化器是对类自身进行初始化。 ②构造函数是在用new运算符产生新对象时由系统自动执行,而静态初始化器则是在它所属的类加载到内存时由系统调用执行。
③不同于构造函数,静态初始化器不是方法,没有方法名、返回值和参数列表。 最终域: 用final修饰的域,实际上就是Java中的常量。
用final修饰符说明常量时,需要注意以下几点: ①需要说明常量的数据类型。 ②需要同时指出常量的具体取值。
③因为所有类对象的常量成员,其数值都固定一致,为了节省空间,常量通常声明为static。 易失域: 如果一个域被volatile修饰符所修饰,说明这个域可能同时被几个线程所控制和修改,即这个域不仅仅被当前程序所掌握,在运行过程中可能在其他未知的程序操作影响和改变该域的取值。
在使用当中应该特别注意。 通常,volatile用来修饰接受外部输入的域。
如表示当前时间的变量将系统的后台线程随时修改,以保证程序中取到的总是最新的当前系统时间,所以可以把它定义为易失域。 (2)方法:是类的动态属性,标志了类所具有的功能和操作。
小括号是方法的标志。 抽象方法: 修饰符abstract修饰的抽象方法是一种仅有方法头,而没有具体的方法体和操作实现的方法。
使用抽象方法的目的是使所有的子类,对外都呈现一个相同名字的方法,是一个统一的接口。所有的抽象方法,都必须存在于抽象类之中。
静态方法: 用static修饰符修饰的方法,是属于整个类的类方法,不用的是对象或实例的方法。调用这种方法时,应该使用类名作前缀;这种方法在内存中的代码段将随着类的定义而分配和装载,不被任何一个对象专有;只能处理属于整个类的成员变量。
最终方法: 用final修饰符修饰的类方法。功能和内部语句不能再更改的方法,不能再被继承。
注意:所有已被private修饰符限定为私有的方法,以及所有包含在final类中的方法,都被缺省地认为是final的。 本地方法: 用native修饰符声明其他语言书写方法体并具体实现方法功能的特殊的方法。
这里的其他语言包括C/C++/FROTRAN/汇编等。由于native的方法的方法体使用其他语言在程序外部写成,所以所有的native方法都没有方法体,而用一个分号代替。
同步方法: 如果synchronized修饰的方法是一个类的方法(即static的方法),那么在被调用执行前,将把系统类Class中对应当前类的对象加锁。如果synchronized修饰的是一个对象的方法(未用static修饰的方法),则这个方法在被调用执行前,将把当前对象加锁。
Synchronized修饰符主要用于多线程共存的程序中的协调和同步。 二,访问控制符。
访问控制符是一组限定类、域或方法是否可以被程序里的其他部分访问和调用的修饰符。类的访问控制符只有一个public,域和方法的访问控制符有四个,分别是public、private、protected、private protected,另外还有一种没有定义专门的访问控制符的缺省情况。
1, 公有访问控制符public: Java的类是通过包的概念来组织的,包氏类的一个松散的集合。处于同一个包中的类可以不需要任何说明而方便的互相访问和引用,而对于不同包中的类,则不行。
但当一个类被声明为public时,他就具有了被其他包中的类访问的可能性,只要这些其。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:2.567秒