/*
2014年9月15日
本程序证明了:
1.static属性i是属于类本身,或者讲:没有对象,我们仍然可以直接通过类名的方式访问该类内部的static属性
static方法g同理
2.static属性和方法虽然属于类本身,虽然可以通过类名的方式访问
但是static属性和方法很明显也属于类对象,当然也可以通过类对象名的方式访问
3.只有非private的static成员才可以通过类名的方式访问
static只是表明了该成员具有了可以通过类名访问的潜在特征
但是否可以通过类名访问,还必须满足一个条件: 该成员必须是非private
4. 静态方法不能访问非静态成员
非静态方法可以访问静态成员
*/
class A
{
public static int i = 10;
public static void f()
{
//g(); //error 说明静态方法可以访问非静态成员
System.out.printf("2014年9月15日\n");
}
public void g()
{
//f(); //OK 说明非静态方法可以访问静态成员
System.out.printf("GGGG\n");
System.out.printf("%d\n", i);
}
}
class TestStatic_
{
public static void main(String[] args)
{
A aa = new A();
//A.f();
aa.f();
System.out.printf("%d\n", aa.i);
System.out.printf("%d\n", A.i);
A.f();
}
}
2014年9月15日
本程序证明了:
1.static属性i是属于类本身,或者讲:没有对象,我们仍然可以直接通过类名的方式访问该类内部的static属性
static方法g同理
2.static属性和方法虽然属于类本身,虽然可以通过类名的方式访问
但是static属性和方法很明显也属于类对象,当然也可以通过类对象名的方式访问
3.只有非private的static成员才可以通过类名的方式访问
static只是表明了该成员具有了可以通过类名访问的潜在特征
但是否可以通过类名访问,还必须满足一个条件: 该成员必须是非private
4. 静态方法不能访问非静态成员
非静态方法可以访问静态成员
*/
class A
{
public static int i = 10;
public static void f()
{
//g(); //error 说明静态方法可以访问非静态成员
System.out.printf("2014年9月15日\n");
}
public void g()
{
//f(); //OK 说明非静态方法可以访问静态成员
System.out.printf("GGGG\n");
System.out.printf("%d\n", i);
}
}
class TestStatic_
{
public static void main(String[] args)
{
A aa = new A();
//A.f();
aa.f();
System.out.printf("%d\n", aa.i);
System.out.printf("%d\n", A.i);
A.f();
}
}