展开全部
找到一篇相关文章,写得很清楚,分享一下
对636f707962616964757a686964616f31333231386661static 修饰符之静态变量和静态方法的理解- -
我们知道,只要是类,无论什么类(包括抽象类),里面只有方法和变量,而要使用这个类我们一般分两步走,如,一个员工类Employee
Employee s;//定义了一个Employee的引用
s=new Employee("Aaron",1980,3,1,1500);//这样才真正建立了一个对象s,也就是说s指向了内存中的一块连续的区域.
—这里注意什么是真正的对象,什么是引用—
如果我们要改变这块区域,需调用其中的方法,如
s.raiseSalary(25);//raiseSalary(double)为Employee 中的方法
这样,我们通过方法(类方法)改变了类中的变量(类数据或类变量).
所谓静态方法,就是通过类名来调用(当然通过类对象来调用一样是可以的,就像core java里说的一样,容易让人混淆!)的方法,
而静态变量它是一种共享变量(VB.net里面如此称呼,比较容易理解).,任何通过类名来调用,都可以改变其值.
关于静态方法(通过类产生的对象)调用静态方法,调用非静态方法(通过类名或都是对象调用)都是可以的,但是,静态方法可以调用静态变量而不可以调用非静态变量(Error(12,30): non-static variable a cannot be referenced from a static context)
以下是thinking in java 里面的关于static 的描述:
2.6.3 static关键字
通常,我们创建类时会指出那个类的对象的外观与行为。除非用new创建那个类的一个对象,否则实际上并未得到任何东西。(注意,这里其实