static成员是可以被其所在class创建的实例访问!!!

  <span style="font-family: Arial, Helvetica, sans-serif; ">关于静态方法以及静态变量的使用就不详细的说了,我就这里只是探讨一下“static成员是不能被其所在class创建的实例访问”</span>

    作为一个java的渣渣。最近在看static关键字的详解,看到网上的一篇文章中写道:static成员是不能被其所在class创建的实例访问。

    就感觉怪怪的,感觉应该是可以访问的。然后自己写了一个例子测试了一下。

    代码如下:

 

public class StaticTest {
	public static void main(String[] args)
	{
		A mm = new A();
		System.out.println("A.a = "+ A.a);
		System.out.println("mm.a = "+ mm.a);
		A.add(100);
		mm.add(24);
	}
}
class A{
	protected static int a = 5;
	private static int b;
	public static void add(int c)
	{
		b = c;
		System.out.println("b=="+b);
	}
}

 

    输出结果:

 

A.a = 5
mm.a = 5
b==100
b==24

 

    上面的例子中我实例化了一个Class A 的对象mm,然后用该对象调用Class A 中的静态方法以及静态的成员变量,结果都是可以访问到的。

    类的实例对象明明是可以访问该类的静态变量以及静态方法的。

类中的静态变量是存储在JVM中的方法区中,方法区是共享区。所有该类的对象都是可以访问该静态变量。

    类的静态方法以及静态变量可以直接通过类名来调用(ClassName.method()、ClassName.variable,在类外),可以不需要实例化对象就可以访问。

    但是实例化了之后也是可以用实例化的对象来访问类的静态方法以及静态变量的。

    只是这种方式是不推荐的。

            ** 使用类的实例对象调用静态方法:对象.静态方法 。这样子不能很清楚的看出他们是类的方法。

            ** 使用类的实例对象调用静态变量:对象.静态变量。这样子不能很清楚的看出他们是类的变量。

    所以在调用类中的静态方法以及静态变量的时候,使用ClassName.method()、ClassName.variable的方式

    详细的可以参看java开发文档:http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html

  转自:http://blog.csdn.net/zzzxzxh/article/details/44672941

posted @ 2017-03-21 11:50  坐在家里晒太阳  阅读(311)  评论(0编辑  收藏  举报