【职坐标】java面向对象前言——static关键字

来源:互联网 发布:java框架 编辑:程序博客网 时间:2024/05/17 22:20

Java面向对象前言

—— static关键字详解

一、      Static关键字的概念

static为“全局”或者“静态”的意思,用来修饰成员变量(类的属性)和成员方法(类的方法),也可以用来修饰代码块。但是在java中没有全局变量的概念,所以在java中static翻译为静态

二、      使用static修饰的特点

被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。

当声明多个同一类型的对象时(由同一个类创建的不同对象),并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量,所以说在类中使用static修饰的成员(属性和方法)都是所有对象共享的,也是唯一的。

三、      动态加载和静态加载简介

程序绑定的概念

绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来

动态绑定和静态绑定

静态绑定

在程序执行前方法已经被绑定(也就是说在编译过程中就已经知道这个方法到底是哪个类中的方法),此时由编译器或其它连接程序实现。

动态绑定

1.在运行时根据具体对象的类型进行绑定

2. 动态绑定的过程

a) 虚拟机提取对象的实际类型的方法表;

b)  虚拟机搜索方法签名;

c)  调用方法。

四、      Static关键字使用详解

a)      作为修饰符, static可以用来修饰变量、方法、代码块(但绝对不能修饰类)。

修饰变量:

类的所有对象共同拥有的一个属性,也称为类变量。这类似于C语言中的全局变量。类变量在类加载的时候初始化,而且只被初始化一次。在程序中任何对象对静态变量做修改,其他对象看到的是修改后的值。因此类变量可以用作计数器。另外,Java Static变量可以用类名直接访问,而不必需要对象。

修饰方法:

类的所有对象共同拥有的一个功能,称为静态方法。静态方法也可以用类名直接访问,而不必需要对象。所以在静态方法里不能直接访问非静态变量和非静态方法,在Static方法里不能出现this或者super等关键字。

 修饰Java代码块:

用static去修饰类里面的一个独立的代码块,称为静态代码块。静态代码块在类第一次被加载的时候执行,而且只执行一次。静态代码块没有名字,因此不能显式调用,而只有在类加载的时候由虚拟机来调用。它主要用来完成一些初始化操作。

五、    Static在使用时的限制

a)      它们仅能调用其他的static 方法。

b)     它们只能访问static数据。

c)      它们不能以任何方式引用this 或super。

六、    总结

a)      static成员是不能被其所在class创建的实例访问的。

b)     如果不加static修饰的成员是对象成员,也就是归每个对象所有的。

c)      加static修饰的成员是类成员,就是可以由一个类直接调用,为所有对象共有的。

1 0
原创粉丝点击