在静态方法中访问类的实例成员

1.示例程序

 1 public class Example
 2 {
 3  int x = 3;//类的实例变量,初始化值为3
 4  static int  y = 4;//类的静态变量,初始化值为4
 5  public static void method()//静态方法
 6   {
 7    System.out.println("实例变量x = " + new Example().x);//在静态方法中访问类的实例变量需首先进行类的实例化
 8    System.out.println("静态变量y = " + y);//在静态方法中可直接访问类的静态变量
 9   }
10
11  public static void main(String[] args)
12     {
13          Example.method();
14          Example ex = new Example();
15         System.out.println("x = " + ex.x);
16     }
17 }

2.运行结果

3.结果分析

类中静态的方法或者属性,本质上来讲并不是该类的成员,在java虚拟机装在类的时候,这些静态的东西已经有了对象,它只是在这个类中"寄居",不需要通过类的构造器(构造函数)类实现实例化;而非静态的属性或者方法,在类的装载是并没有存在,需在执行了该类的构造函数后才可依赖该类的实例对象存在。

在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。

静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。

public static void main(String[] args)

{

Example.method();

Example ex = new Example();

System.out.println("x = " + ex.x);

}

}

时间: 2024-10-27 04:26:06

在静态方法中访问类的实例成员的相关文章

静态方法中访问类的实例成员

public class StaticShiLi { static int i=1; int j=2; static void m(){ System.out.println(j);报错 } public static void main(String[] args) { // TODO Auto-generated method stub } } 程序报错,显示无法访问. 疑问:那么怎样在静态方法中访问类的实例成员呢?

Java如何在静态方法中访问类的实例成员(没附加static关键字的字段或方法)

Java如何在静态方法中访问类的实例成员(没附加static关键字的字段或方法)?? static修饰的在加载时是先于非静态的加载,也就是如果在static中如果调用了非静态的方法或变量会报错,因为此时非静态的方法和变量还不存在(可以这样理解) . 在静态方法中访问类的实例变量需首先进行类的实例化,除了加static修饰,还可以先new创建一个对象,通过对象去调用成员方法和变量,如new A().test(). 例如: package 静态方法访问实例变量; public class Test{

如何在静态方法中访问类的实例成员

静态方法中不能直接访问同一类中的非静态成员,而必须先创建对象,再通过对象访问成员. 例如: public class Ex{ int i =123; static int Temp; public static void A() { System.out.println(Temp); } public int B() { int x = 100; return x; } public static void main(String args[]) { Ex e = new Ex(); Temp

如何在静态方法中访问实例对象

静态方法中只允许访问静态数据,那么,如何在静态方法中访问类的实例成员(即没有附加static关键字的字段或方法)? public class jingtai { public int x=200; public static int y=300; public static void method() { System.out.println("实例变量x="+new jingtai().x);//在类的静态方法中访问类的实例变量 System.out.println("静态

JavaScript 中的"类"与"实例"

JavaScript 中没有父类, 子类的概念, 也没有class 和 instance 的概念, 全靠 prototype chain来实现继承. 当查找一个对象的属性时, JavaScript 会向上遍历 prototype chain, 直到找到对应的属性为止. 有几种方法, 可以使得 JavaScript 模拟出 class 和 instance 的概念. 1, 直接使用构造函数来创建对象, 在构造函数内部使用 this指代对象实例. > function Animal() { ...

C#箴言之用属性来访问类的私有成员

在程序中,难免要访问某个对象的私有成员.那么以前实现这类功能的方法有两种,第一种方法最简单,就是把成员访问符从“private”改为“public”即可:而另一个就是提供公有的成员访问函数来进行访问.那么现在用C#编写程序,就不再需要采用前面所说的两种方法了,而直接使用属性来完成. 首先来看看三种方法的如何实现以及调用的,这里用一个例子来说明,即访问“EmployeeInfo”类的私有成员strName,具体如下表格所示. 那么这三种方法有什么区别呢,用如下的表格,可以更好的说明三者的区别. 因

Android内核sysfs中switch类使用实例

Android内核sysfs中switch类使用实例 终于在这个周末,可以干点自己想要干的事了.由我这个二流的内核驱动开发者来解析一下sysfs中的switch类.先推测一下来历,在普通的嵌入式Linux平台上,一般是各自为战,完全不需要遵循什么规则.在Android中Google定义了一些潜移默化的规范,你可以完全不遵守.但是按照规则总归是好的. 先从直观的来看一下/sys/class/switch类中都有些什么吧. 首先可以看到实质是链接到了/sys/device/virtual/switc

在赋值运算符函数中,类的实例能直接访问私有数据成员???

印象中,private的数据成员只能在类的成员函数中使用,无法通过类的对象直接访问!(错误理解) 正确的理解是:在类的成员函数中,可以直接访问私有成员.即只要在该类的成员函数中,无论是直接访问该类的私有数据成员,还是访问某个对象(必选是该类型)的私有数据成员,均是可以的!!! 借鉴网上(http://blog.csdn.net/iaccepted/article/details/34853937 )的说法就是: 实践证明,类(class)私有成员可以被类成员函数访问,不区分成员在哪个实例(ins

Python面试题之Python中的类和实例

0x00 前言 类,在学习面向对象我们可以把类当成一种规范,这个思想就我个人的体会,感觉很重要,除了封装的功能外,类作为一种规范,我们自己可以定制的规范,从这个角度来看,在以后我们学习设计模式的时候,对设计模式的理解会很有帮助.其次,语言中类是抽象的模板,用来描述具有相同属性和方法的对象的集合,比如Animal类.而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同. Python使用class关键字来定义类,其基本结构如下: class 类名(父类列表)