类的成员与方法
数据成员:数据成员可以分为静态成员,实例成员
静态成员:静态成员变量是和类相关联的,可以作为类中“共”有的变量,她不是依赖特点对象的存在,访问的时候通过类名加点操作符加变量名来访问
实例成员:实例成员变量是和对象相关联的,访问实例成员依赖于实例的存在
函数成员(静态方法,实例方法)
静态方法:静态方法不属于特定对象的方法,静态方法可以访问静态成员变量,静态方法不可以直接访问实例变量,静态方法也不能直接调用实例方法,可以间接调用,首先要建立一个类的实例,然后通过这一个特定的对象来调用实例方法,但可以调用静态方法。
实例方法:一个实例方法的执行与特定对象关联,他的执行需要一个对象的存在,实例方法可以直接访问静态变量和实例变量,实例方法可以直接访问实例方法和静态方法
静态方法的访问方式为类名加点操作符加变量名。当多个实例对象存在时,内存中并不是存在每个特定的实例方法的拷贝,而是,相同类的所有对象都共享每个实例方法的一个拷贝
class Test
{
int x;
static int y;
void F()
{
x=1;//正确,等价于this.x=1
y=2; // Test.y=1
}
static void G()
{
x=1;//错,不能访问this.x 静态构造函数只能访问静态成员
y=1;//正确
}
}
static void main()
{
Test t=new Test();
t.x=1;//正确
t.y=1;//错,不能在类实例中访问静态成员
Test.x=1;//错,不能按类访问非静态成员
Test.y=1;//正确
}
}
{
int x;
static int y;
void F()
{
x=1;//正确,等价于this.x=1
y=2; // Test.y=1
}
static void G()
{
x=1;//错,不能访问this.x 静态构造函数只能访问静态成员
y=1;//正确
}
}
static void main()
{
Test t=new Test();
t.x=1;//正确
t.y=1;//错,不能在类实例中访问静态成员
Test.x=1;//错,不能按类访问非静态成员
Test.y=1;//正确
}
}