类变量和类方法的特性

  • 类变量

     

    类中使用static关键字定义的成员变量称为类变量,它具有以下特性:

    1. 类变量被类的所有实例所共享。
    2. 类变量能被说明为public或private。
    3. 如被说明为public, 则即使没有创建类的实例,也可从外界存取该类变量。
    4. 由于类变量的特性,有时它可用于类的多个实例间的通信和信息交换。如:
      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()方法之所以被说明为类方法,是因为它往往是任何对象实例生成前首先被执行的方法。另外,类方法也不能被非类方法所重写。

    两点结论:

    1. 类变量和类方法存在于类中,并为所有类的实例所共享,类方法可通过类的实例或类本身来存取。
    2. 非类变量(实例变量)与类的实例相联系,且只能被该实例的非类方法(实例方法)所存取。类的多个实例间其实例变量的值可能不同。

  •  

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值