<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. removeAll

    问题:无法移除2个集合中相同元素 方法:移除所包含的其所有元素. 在执行removeAll方法时,会先对集合元素进行比较,如果元素相等才执行移除操作,说到这,相信很多人都已经明白是怎么回事了,因为不相 ...

  2. Ubuntu系统下搭建PPTP类型VPN环境

    step1: 安装pptpd 很简单的命令:sudo apt-get install pptpd step2: 修改pptpd的配置 有三个文件需要修改: (1)修改/etc/pptpd.conf,添 ...

  3. Jenkins添加用户

    新建用户 Jenkins刚开始的界面是允许访客进行所有操作的,这时Jenkins是有安全隐患的,也不容易去管理.这时,我们需要管理Jenkins的权限,对它的权限进行设置.关于Jenkins权限设置的 ...

  4. java socket tcp(服务器循环检测)

    刚才看了下以前写了的代码,tcp通信,发现太简单了,直接又摘抄了一个,运行 博客:http://blog.csdn.net/zhy_cheng/article/details/7819659 优点是服 ...

  5. 使用 position:sticky 实现粘性布局

    如果问,CSS 中 position 属性的取值有几个?大部分人的回答是,大概是下面这几个吧? { position: static; position: relative; position: ab ...

  6. [Hive] - Hive参数含义详解

    hive中参数分为三类,第一种system环境变量信息,是系统环境变量信息:第二种是env环境变量信息,是当前用户环境变量信息:第三种是hive参数变量信息,是由hive-site.xml文件定义的以 ...

  7. 推荐一款好用的WSL终端模拟器

    Windows 10 中包含了一个 WSL(Windows Subsystem for Linux)子系统,我们可以在其中运行未经修改过的原生 Linux ELF 可执行文件.利用它我们可以做很多事情 ...

  8. fetch使用的常见问题及解决办法

    首先声明一下,本文不是要讲解fetch的具体用法,不清楚的可以参考MDN fetch教程. 引言 说道fetch就不得不提XMLHttpRequest了,XHR在发送web请求时需要开发者配置相关请求 ...

  9. Unity3d的序列帧动画

    马上这星期就要过去了,为了完成每星期写一篇博客的目标,熬夜也要写完. 最近项目中用到了很多序列帧动画,之前看教程也接触过序列帧动画,但当时没用到,就没仔细研究,这次就借着这个机会好好总结一下序列帧动画 ...

  10. xargs命令详解,xargs与管道的区别

    为什么要用xargs,问题的来源 在工作中经常会接触到xargs命令,特别是在别人写的脚本里面也经常会遇到,但是却很容易与管道搞混淆,本篇会详细讲解到底什么是xargs命令,为什么要用xargs命令以 ...