一.数据成员
1.用static修饰符修饰的数据成员是不属于任何一个类的具体对象,而是属于类的静态数据成员。
(1)它被保存在类的内存区的公共存储单元中,而不是被保存在某个对象的内存区中,一个类的任何对象访问它时,存取到的都是相同的数值。
(2)可以通过类名加点操作符访问它。
package test;
import java.applet.Applet;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Toolkit;
public class TestStatic extends Applet
{
public void paint(Graphics g)
{
Test t1 = new Test();
Test t2 = new Test();
t1.a=11;
g.drawString("t2="+t2.a,20,20);
g.drawString("Test="+Test.a,20,30);
g.drawString("t1="+t1.a,20,40);
}
}
public class Test
{
static int a = 22;
}
//注意:t2,Test,t1访问类的数据成员都具有相同的值
2. 用final修饰的数据成员即最终数据成员可声明时初始化,也可通过构造方法赋值,但不能在其他地方赋值,他的值在整个过程是不能改变的,也就是标识符常量。
二.成员方法
1.用static修饰的静态方法
(1)static方法只能访问static数据成员,不能访问非static数据成员,但非static方法可以访问static数据成员。
(2)static方法只能访问static方法,不能访问非static方法,但非static方法可以访问static方法。
(3)static方法不能被覆盖,即这个类的子类不能有相同名和相同参数的方法。
package test;
public class F
{
int d1;
static int d2;
void me() { }
static void me1() { }
static void me2()
{
//d1=10; //错误,引用了非static数据成员
d2=10; //合法
//me(); //错误,引用了非static数据成员
me1(); //合法引用
}
}
public class F1 extends F
{
// void me1() { } //错,不能覆盖static方法
}
2.如果类的某个方法被final修饰符所限定,则该类的子类就不能覆盖父类的方法,而仅能使用从父类继承来的方法。