黑马程序员__修饰符

                  ------- android培训java培训、期待与您交流! ----------

  前几篇博文中,在介绍java中相关知识点时,不时涌出一些java中的关键。对于关键字

的掌握也是一件学好java这门语言必不可少的事情。本篇博文将重点讲解并总结java中

大部分关键字的使用。

  在java中,熟练掌握关键字的使用对于程序的编写是很有必要的,以下关键字是我们应

该必须掌握的。

1.abstract(抽象的):一般用于对类以及成员方法进行修饰,被此关键字修饰的类称作抽

象类,被此关键字修饰的方法称作抽象方法。抽象类是不能被实例化的类,抽象方法是没

有方法体的方法,此类方法通常是用来描述系统所具备的功能,但不提供实现。还应该注

意到的是abstract关键字不能用来对构造方法以及成员变量和局部变量进行修饰,也就是没

有抽象的构造方法,成员变量以及局部变量。抽象类以及抽象方法,都不能再被final关键字

修饰,一般来讲abstract与final不能共存。大家应该牢记一点的是抽象修饰的类不能实例化。

<span style="font-size:12px;">abstract final class A{}//编译出错。
abstract class A{
abstract final void show(){}//编译出错。
}</span>

 

2.static(静态的):一般用于对类中的属性——变量,方法进行修饰。不可用来对类以及构造函

数进行修饰,被该关键字修饰的成员变量叫做,静态变量。被该关键字修饰的成员方法叫做静态

方法。静态方法以及静态变量可以直接用类名进行访问。当然也可以通过实例进行访问,一般来讲

静态方法以及静态变量被类的所有实例共享。以下是使用该关键字应注意的几点:

(1)没有被static关键字修饰的方法称作实例方法,在实例方法中,可以直接访问所属类的静态

方法,静态变量,实例方法,实例变量。

<span style="font-size:12px;">class A{
String a=null;
static String b=null;
static void show(){}
 void method(){
a="123";//编译通过
b="xxx";//编译通过
show();//编译通过
}

}</span>


(2)静态方法必须要被实现,静态方法通常用来表示某个类所特有的功能,这种功能不依赖于该类

特定的实例,同样也不依赖于它的子类。因此,静态方法必须被实现,而不能再被定义为抽象的。

 

(3)main方法是静态的,因为main方法作为程序的入口,在它所属的类被java虚拟机加载之后就自动

加载该静态方法,程序得以执行下去。而且,在main方法中不能直接访问该类的实例变量以及实例方法。

事实上,所有的静态方法都不能直接访问类的实例变量以及实例方法,要访问,必须创建类的实例。

<span style="font-size:12px;">public class A{
int x=9;
void show(){}
public static void main(String[] args){
x=10;//编译失败。
show();//编译失败。
}

}</span>


(4)在java的类中,还可以申明static代码块,该代码块不包含于任何方法体中,同样的,java虚拟机在

加载该类时会执行这些代码块,通常静态代码块用于对类的静态变量的初始化,而且在静态代码块当中同

样不能访问类的实例变量以及实例方法。

<span style="font-size:12px;">class A{
static int x;
static String b="null";
static{
x=10;
b="123";

}//给静态变量赋值
}</span>

 

3.访问控制修饰符:

   java中通常采用访问控制修饰符来控制类以及类的方法和变量的访问权限。访问控制分为以下4

种级别:

(1)公开级别:用public修饰,表示对外公开。

(2)受保护级别:用protected修饰,向子类及同一个包中的类公开。

(3)默认级别:没有访问控制修饰符,向同一个包中的类公开。

(4)私有级别:用private修饰,只有类本身可以访问,不对外公开。

成员变量,成员方法和构造方法可以处于4个级别中的任意一个。顶层类只可以处于公开或者默认级

别,因此顶层类不能用private以及protected来修饰。

 

4.final关键字(不可改变的):

  final的意思是不可改变的,它可以用于非抽象类,非抽象成员方法以及变量。有以下几点值得我们注意

(1)用该关键字修饰的类不能被继承,没有子类。

(2)用该关键字修饰的方法不能被子类覆盖。

(3)用该关键字修饰的变量只能被赋值一次。

<span style="font-size:12px;">final class A{
}
class B extends A{//编译失败,A类不能被继承
final int a=1;
void method(){
a=2;//编译失败,a的值不可被再次改变
}

}</span>


 

在java中还有以下一些常见的关键字(由于不常用,所以不做重点介绍):

Synchronized(同步的):该关键字一般用于多线程中出现安全问题时使用,主要作用就是防止多线程

同时访问相同代码块会出现的安全问题。

native(本地的):native是告知编译器 该方法是其他语言实现的 比如C语言,C++等等。

volatile(易失的):用在多线程,同步变量。 线程为了提高效率,将某成员变量(如A)拷贝了一份(如B),线程中对A的访问其实访问的是B。只在某些动作时才进行A和B的同步。因此存在A和B不一致的情况。volatile就是用来避免这种情况的。

到此为止,java中的常用的关键基本就讲完了。

 

 

 

 

 


 

 

 

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值