java类修饰符_java中的类和⽅法的修饰符
java中的类和⽅法的修饰符Java程序在定义类时,除了使⽤class关键字标识之外,还可以在class之前增加若⼲类的修饰符来修饰限定所定义的类的特性。类的修饰符分为访问控制符和⾮访问控制符两⼤类。修饰符之间的先后排列次序对类的性质没有任何影响。
⼀,⾮访问修饰符。
1,抽象类:
凡是⽤abstract修饰符修饰的类被称为抽象类。抽象类就是没有具体对象的概念类。
抽象类是⼀种经过优化的概念组织⽅式:把共同特点抽象出来;其后在描述和处理某⼀种具体对象时,就只需描述不同的特殊之处。这种组织⽅式使得所有的概念层次分明,简洁洗练,⾮常符合⼈们⽇常的思维习惯。
由于抽象类是它的所有⼦类的公共属性的集合,所以使⽤抽象类的⼀个优点就是可以充分利⽤这些公共属性来提⾼开发和维护程序的效率。
值得⼀提的是,⾯向对象技术是要⽤更接近于⼈类思维⽅式的⽅法来处理实际问题,抽象类的设⽴就是这种思想的具体体现之⼀,它是模仿⼈类的思维模式的产物。
2,最终类:
如果⼀个类被final修饰符所修饰和限定,说明这个类不可能有⼦类。
被定义为final的类通常是⼀些有固定作⽤、⽤来完成某种标准功能的类。如Java系统定义好的⽤来实现⽹络功能的InterAddress、Socket 等类都是final类。
abstract和final修饰符不能同时修饰⼀个类,因为abstract类⾃⾝没有具体对象,需要派⽣出⼦类后在创建⼦类的对象;⽽final类不可能有⼦类。这样放在⼀起修饰就没有意义了。
3,有些类的修饰符也可以⽤来修饰类中的域或⽅法:
(1) 域:是类和对象的静态属性,定义域的操作就是说明变量或创建对象的操作。
<1> 静态域:java类的概念
⽤static修饰符修饰的域是仅属于类的静态域。静态域是类中每个对象共享的域。他们是类的域,不属于任何⼀个类的具体对象。是⼀个公共的存储单元,任何⼀个类的对象访问它时,取到的都是相同的数值。
<2> 静态初始化器:
静态初始化器是由关键字static引导的⼀对⼤括号括起的语句组。作⽤是:在加载时,初始化类的静态域。如有多个static{}程序段,则在类的初始化时,会依次执⾏.
与构造函数相同,他们都是⽤来完成初始化的⼯作,但是静态初始化器与构造函数有三点不同:
①构造函数是对每个新创建的对象初始化,⽽静态初始化器是对类⾃⾝进⾏初始化。
②构造函数是在⽤new运算符产⽣新对象时由系统⾃动执⾏,⽽静态初始化器则是在它所属的类加载到内存时由系统调⽤执⾏。
③不同于构造函数,静态初始化器不是⽅法,没有⽅法名、返回值和参数列表。
<3> 最终域:
⽤final修饰的域,实际上就是Java中的常量。
⽤final修饰符说明常量时,需要注意以下⼏点:
①需要说明常量的数据类型。
②需要同时指出常量的具体取值。
③因为所有类对象的常量成员,其数值都固定⼀致,为了节省空间,常量通常声明为static。
<4> 易失域:
如果⼀个域被volatile修饰符所修饰,说明这个域可能同时被⼏个线程所控制和修改,即这个域不仅仅被当前程序所掌握,在运⾏过程中可能在其他未知的程序操作影响和改变该域的取值。在使⽤当中应该特别注意。
通常,volatile⽤来修饰接受外部输⼊的域。如表⽰当前时间的变量将系统的后台线程随时修改,以保证程序中取到的总是最新的当前系统时间,所以可以把它定义为易失域。
(2)⽅法:是类的动态属性,标志了类所具有的功能和操作。⼩括号是⽅法的标志。
<1> 抽象⽅法:
修饰符abstract修饰的抽象⽅法是⼀种仅有⽅法头,⽽没有具体的⽅法体和操作实现的⽅法。使⽤抽象⽅法的⽬的是使所有的⼦类,对外都呈现⼀个相同名字的⽅法,是⼀个统⼀的接⼝。所有的抽象⽅法,都必须存在于抽象类之中。
<2> 静态⽅法:
⽤static修饰符修饰的⽅法,是属于整个类的类⽅法,不⽤的是对象或实例的⽅法。调⽤这种⽅法时,应该使⽤类名作前缀;这种⽅法在内存中的代码段将随着类的定义⽽分配和装载,不被任何⼀个对象专有;只能处理属于整个类的成员变量。
<3> 最终⽅法:
⽤final修饰符修饰的类⽅法。功能和内部语句不能再更改的⽅法,不能再被继承。
注意:所有已被private修饰符限定为私有的⽅法,以及所有包含在final类中的⽅法,都被缺省地认为是final的。
<4> 本地⽅法:
⽤native修饰符声明其他语⾔书写⽅法体并具体实现⽅法功能的特殊的⽅法。这⾥的其他语⾔包括C/C++/FROTRAN/汇编等。由于native的⽅法的⽅法体使⽤其他语⾔在程序外部写成,所以所有的native⽅法都没有⽅法体,⽽⽤⼀个分号代替。
<5> 同步⽅法:
如果synchronized修饰的⽅法是⼀个类的⽅法(即static的⽅法),那么在被调⽤执⾏前,将把系统类Cla
ss中对应当前类的对象加锁。如果synchronized修饰的是⼀个对象的⽅法(未⽤static修饰的⽅法),则这个⽅法在被调⽤执⾏前,将把当前对象加锁。 Synchronized修饰符主要⽤于多线程共存的程序中的协调和同步。
⼆,访问控制符。
访问控制符是⼀组限定类、域或⽅法是否可以被程序⾥的其他部分访问和调⽤的修饰符。类的访问控制符只有⼀个public,域和⽅法的访问控制符有四个,分别是public、private、protected、private protected,另外还有⼀种没有定义专门的访问控制符的缺省情况。
1,公有访问控制符public:
Java的类是通过包的概念来组织的,包⽒类的⼀个松散的集合。处于同⼀个包中的类可以不需要任何说明⽽⽅便的互相访问和引⽤,⽽对于不同包中的类,则不⾏。但当⼀个类被声明为public时,他就具有了被其他包中的类访问的可能性,只要这些其他包中的类在程序中使⽤import语句引⼊public类,就可以访问和引⽤这个类。
类中被设定为public的⽅法是这个类对外的接⼝部分,避免了程序的其他部分直接去操作类内的数据,这实际就是数据封装思想的体现。
每个Java程序的主类都必须是public类,也是基于相同的原因。
⽤public修饰的类的域称为公共域。如果公共域属于公共类,则它能被所有的其他类所引⽤。public修饰符会造成安全性的数据封装性下降,所以⼀般应减少public域的使⽤。
2,缺省访问控制符:
缺省访问控制权规定,该类只能被同⼀个包中的类访问和引⽤,⽽不可以被其他包中的类使⽤,这种访问特性⼜称为包访问性。
同样道理,类内的域或⽅法如果美育访问控制符来限定,也就具有包访问性。
简单说,定义在同⼀个程序中的所有类属于⼀个包。
3,私有访问控制符private :
⽤private修饰得域或⽅法只能被该类⾃⾝所访问和修改,⽽且不能被任何其他类(包括该类的⼦类)来获取和引⽤。private修饰符⽤来声明那些类的私有成员,它提供了最⾼的保护级别。
4,保护访问控制符protected :
⽤protected修饰的成员变量可以被三种类所引⽤:该类⾃⾝、与它在同⼀个包中的其它类、在其他包中的该类的⼦类。使⽤protected修饰符的主要作⽤是允许其他包中该类的⼦类来访问⽗类的特定属性。
5,私有保护访问控制符 private protected :
⽤private protected修饰的成员变量可以被两种类访问和引⽤,⼀种是该类本⾝,⼀种是该类的所有⼦类。把同⼀个包内的⾮⼦类排除在可访问的范围之外,使得成员变量更专于具有明确继承关系的类,⽽不是松散地组合在⼀起的包。
另记:内部类的修饰字还可以是private:即只有外层类的区域可以访问。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论