<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

static成员是可以被其所在class创建的实例访问!!!的更多相关文章

  1. 类模版的static成员

    类模版中声明static成员 template <class T> class Foo { public: static size_t count() { ++ctr; cout < ...

  2. cc31a_demo--CppPrimer_静态成员与继承-在派生类中访问基类中的static成员的方法

    //*基类中的static成员,在整个继承层次中只有一个实例 //*在派生类中访问基类中的static成员的方法 //1.基类名::成员名 //2.子类名::成员名 //3.对象.成员名 //4.指针 ...

  3. java static成员变量方法和非static成员变量方法的区别

    这里的普通方法和成员变量是指,非静态方法和非静态成员变量首先static是静态的意思,是修饰符,可以被用来修饰变量或者方法. static成员变量有全局变量的作用       非static成员变量则 ...

  4. 为什么static成员必须在类外初始化,而不能在类的头文件中初始化

    为什么static成员必须在类外初始化 为什么静态成员不能在类内初始化 在C++中,类的静态成员(static member)必须在类内声明,在类外初始化,像下面这样.   class A { pri ...

  5. 类的static成员并用其实现一个单例模式

    对于特定类型的全体对象而言,有时候可能需要访问一个全局的变量.比如说统计某种类型对象已创建的数量.如果我们用全局变量会破坏数据的封装,一般的用户代码都可以修改这个全局变量,这时我们可以用类的静态成员来 ...

  6. 类模板的static成员

    下列代码可以通过编译吗?如何修改使其通过编译? template <class T> struct sum {   static void foo(T op1 , T op2){    c ...

  7. C++_static与非static成员(函数)

    static与非static成员(函数)  <C++ Primer>第4版399页: 对于特定类类型的全体对象而言,访问一个全局变量有时是必要的.然而,全局变量会破坏封装:对象需要支持特定 ...

  8. static成员函数

    1.static成员函数不能定义为const的,这是因为static成员函数只是全局函数的一个形式上的封装,而且static成员函数不能访问类的非静态成员(没有this)指针,修改非静态数据成员又从何 ...

  9. C++中的static数据成员与static成员函数

    本文要点: 1.static成员它不像普通的数据成员,static数据成员独立于该类的任意对象而存在,每个static数据成员是与类关联的对象,并不与该类的对象相关联! aka:每个static数据成 ...

随机推荐

  1. github在windows下的安装和基本使用

    1.在win下安装github时花费的时间是非常长的,有时还会出现因各种原因安装不成功.离线包本地安装方便的解决了此问题.点击http://pan.baidu.com/s/1boGrNLP可下载,解压 ...

  2. WEB前端性能优化之二——css优化

    1.把样式表置于顶部 现把样式表放到文档的< head />内部似乎会加快页面的下载速度.这是因为把样式表放到< head />内会使页面有步骤的加载显示.HTML规范清 楚指 ...

  3. OOP面向对象三大特点

    OOP面向对象三大特点 (一)封装:将现实中一个事物的属性和功能集中定义在一个对象中.(创建对象) 创建对象的3种方式: 1.直接量方式:(创建一个单独的对象) var obj={ 属性名:值,    ...

  4. iphone在iframe页面的宽度不受父页面影响,避免撑开页面

    工作中有个需求,就是产品页面通过iframe引用显示产品协议页,要求不要横向滑动,只需要竖向滑动,但在iphone中引用的iframe会撑开父页的宽度,而在android端浏览器这不会. <di ...

  5. Omi教程-生命周期和事件处理

    生命周期 名称 含义 时机 constructor 构造函数 new的时候 install 初始化安装,这可以拿到用户传进的data进行处理 实例化 installed 安装完成,HTML已经插入页面 ...

  6. Python学习一:Python简介

    Python简介: Python是目前广泛使用的一门动态语言,类似Java,源代码必须首先由编译器转换成字节码(byte code),然后再由解释器来执行字节码.与Java不同的是,Python的编译 ...

  7. PowerPoint超链接字体颜色修改、怎么去掉超链接下划线

    经常在做PPT幻灯片时会遇到这样一个问题,给文字加超链接后发现链接的颜色是蓝色的,而且还带有下划线,这种效果与主题的色彩搭配简直是太影响美观效果了.有没有什么办法可以去掉PPT中的超链接下划线?再将超 ...

  8. vc中Error spawning cl.exe错误的解决方法.

    可能很多人在安装VC 6.0后有过点击“Compile”或者“Build”后被出现的 “Compiling... ,Error spawning cl.exe”错误提示给郁闷过.很多人的 选择是重装, ...

  9. gridcontrol显示行号,总行,打印,导出Excel,设置标头及内容居中方法

    1.一般为了表格显示数据更直观,经常会显示行号以及总数.让gridcontrol显示行号,首先你需要设置一下显示行号的宽度,也就是IndicatorWith.默认值为-1,可根据实际数值需要设置宽度, ...

  10. Redis服务器搭建

    下载并解压redis,然后进入redis所在目录   编译安装             make && make install   启动redis 服务 (加上&表示在后台运 ...