- 类变量
类中使用static关键字定义的成员变量称为类变量,它具有以下特性:
- 类变量被类的所有实例所共享。
- 类变量能被说明为public或private。
- 如被说明为public, 则即使没有创建类的实例,也可从外界存取该类变量。
- 由于类变量的特性,有时它可用于类的多个实例间的通信和信息交换。如:
public class Count { private int serialNumber; private static int count = 0; public Count() { count++; serialNumber = count; } }
在上例中,如果类Count生成多个实例的话,每个被创建的实例对象均被赋予一个唯一的序列号(serialNumber),该序列号从1开始,每次加1。
类变量有点类似其它程序设计语言中的全局变量,它能被类的任何实例所存取。如类变量未用private限定,在没有创建任何类的实例的情况下,从类的外部也能通过类名来存取它。如:
public class StaticVar { public static int number; } public class OtherClass { public void method() { int x = StaticVar.number; } }
- 类方法
与类变量类似, 用static关键字定义的方法被称为类方法(或静态方法),它也能在未创建任何类的实例的情况下被调用。如:
public class GeneralFunction { public static int addUp(int x,int y) { return x+y; } } public class UseGeneral { public void method() { int a = 9; int b = 10; int c = GeneralFunction.addUp(a,b); System.out.println("addUp() gives"+c); } }
因为类方法能在未创建任何实例的情况下被调用,所以除了类变量或类方法自己的参数外,类方法不能存取任何实例变量,否则就会引起编译错误。如:public class Wrong { int x; public static void main(String args[]) { x = 9; //COMPILER ERROR! } }
main()方法之所以被说明为类方法,是因为它往往是任何对象实例生成前首先被执行的方法。另外,类方法也不能被非类方法所重写。两点结论:
- 类变量和类方法存在于类中,并为所有类的实例所共享,类方法可通过类的实例或类本身来存取。
- 非类变量(实例变量)与类的实例相联系,且只能被该实例的非类方法(实例方法)所存取。类的多个实例间其实例变量的值可能不同。
类变量和类方法的特性
最新推荐文章于 2022-09-04 14:10:12 发布