2 jesuskryst JesusKryst 于 2016.04.13 16:52 提问

为什么在构造方法中无法操作此类的静态成员

这是代码的一部分
public static String Txt;
public ChatView(){
setLayout(null);
Send.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//实现发送
// String str=InputArea.getText(); 可以赋给str
// Txt=str; 无法赋给Txt
Txt = InputArea.getText(); //无法赋给Txt
InputArea.setText("");
}
});

2个回答

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.04.13 17:29

这是java的语法规定的啊,因为静态方法是类的属性,只能通过类名来访问,而不需要通过对象啊。
构造函数是创建对象时调用的,是类的非静态方法,是不能访问静态成员的。

wojiushiwo945you
wojiushiwo945you 回复JesusKryst: 编译器只会给出警告,还是可以通过编译的。
2 年多之前 回复
JesusKryst
JesusKryst 我记得可以啊。而且编译器也没报错啊
2 年多之前 回复
q411692787
q411692787   2016.04.13 18:13

应该可以的啊!静态成员还没实例化就已经存在内存中了,而非静态的要实例化才会存在的。

所以静态方法不能调用非静态成员,但非静态方法是可以调用静态成员的。

JesusKryst
JesusKryst 所以我很郁闷啊。不知道什么原因
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
关于为什么类的静态成员变量不能立即初始化
     我们都知道代码1是错误的,今天我去追究其原因。当然有些地方属于个人理解,有所纰漏,请不吝惜指正。 // test.hclass Test { public: static int a = 5; };                                                  代码1      当我们写下面的代码时,而没有在cpp文件里给出定义,就会出现无法解析的外部符号错误。这是因为"static int a;"是对变量a的声明。我们都知道,类实例化时,编译器分配内存
java 中类初始化,构造方法,静态成员变量,静态块的加载顺序
1、编译和运行概念要搞清:编译即javac的过程,负责将.java文件compile成.class文件,主要是类型、格式检查与编译成字节码文件,而加载是指java *的过程,将.class文件加载到内存中去解释执行,即运行的时候才会有加载一说。2、类的加载时机,肯定是在运行时,但并不是一次性全部加载,而是按需动态,依靠反射来实现动态加载,一般来说一个class只会被加载一次,之后就会从jvm的cla
C#中静态构造函数的几点注意
静态构造函数是C#的一个新特性,其实好像很少用到。不过当我们想初始化一些静态变量的时候就需要用到它了。这个构造函数是属于类的,而不是属于哪里实例的,就是说这个构造函数只会被执行一次。也就是在创建第一个实例或引用任何静态成员之前,由.NET自动调用。   class SimpleClass   {   // Static constructor   static SimpleClass()
类的静态方法(函数)中为什么不能调用非静态成员(属性)?
程序最终都将在内存中执行,变量只有在内存中占有一席之地时才能被访问。 类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,然后通过类的对象(实例)去访问。在一个类的静态成员中去访问其非静态成员之所以会出错是因为在类的非静态成员不存在的时候类的静态成员就已经存在了,访问一
提高C#编程水平的50个要点 之十三“使用静态构造函数来初始化静态成员变量”
编写程序的时候难免要使用到静态成员,由于静态成员的访问是脱离类型对象的,所以使用非静态构造函数,私有方法或者一些其他方法进行静态变量的初始化都是不合理的。   .net提供了成员初始化语句和静态构造函数来初始化静态成员,但我们知道静态成员的初始化语句会早于静态构造函数执行,其次还知道成员初始化语句的好处和一些限制。要提的一点就是,静态构造函数和实例构造函数之间的区别,因为静态构造函数是由CLR调
为什么不允许从enum的构造函数中引用static变量?
为什么不允许从enum的构造函数中引用static变量? url:http://hi.baidu.com/turt_ed___/blog/item/622fb2084dda1235e924888d.html "Cannot refer to the static enum field XX within an initializer."从enum的构造函
如果类的构造函数私有化,再实例化时,通过静态成员函数来调用构造函数。
静态私有成员在类外不能被访问,可通过类的静态成员函数来访问; 当类的构造函数是私有的时,不像普通类那样实例化自己,只能通过静态成员函数来调用构造函数。 对象之间通过类的静态成员变量来实现数据的共享的。静态成员变量占有自己独立的空间不为某个对象所私有。 实例::: class A { private:    A(){  }    ~A(){ }
调用另一个构造方法
       如果某个构造方法的部分行为与已有的构造方法相同,则可以在该构造函数中调用已有的构造函数。Java提供了一种特殊的语法来完成这种工作,可用下面的代码来调用当前类中的构造方法:              This(arg1,arg2,arg3);       例如,来看一个简单的类,它使用圆心坐标(x,y)和半径长度定义了一个圆。类MyCircle可能有两个构造函数:一个定义了半
静态成员变量静态代码块和构造方法的执行顺序
类型一:静态成员变量+非静态成员变量+构造方法public class StaticInitialization { public static void main(String[] args) { System.out.println("creating new Cupboard() in main"); new Cupboard(); Sys
java中静态成员与非静态成员之间的访问关系
转载地址:http://blog.csdn.net/zhouwubin123/article/details/6623308 程序最终都将在内存中执行,变量只有在内存中占有一席之地时才能被访问。 类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,然后通过类的对