首先,作用差别应该不大,不过,java只能在class定义static变量,c++应该是可以在Method中定义的。
其次,static是class变量,抽象类只是不能被实例化的,但是,static变量,是通过class直接访问,所以是可以在抽象类中定义的。什么时候用的问题就要看你这个变量是对实例还是对class而言了。如果各个实例有自己的信息当然不能为static,如果各个实例要同享某个信息,就要使用static了。