JAVA中"静态方法中不能直接调用非静态的属性和方法"何以理解?举个例子

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA中"静态方法中不能直接调用非静态的属性和方法"何以理解?举个例子相关的知识,希望对你有一定的参考价值。

那主函数可以new本类,之后用对象调非静态方法啊

class test
public int i=1;
public static int y=2;
public static void doi2()

System.out.println("good");

public void doi()

System.out.println(i);

public static void doi3()


System.out.println(i);静态方法中不能直接调用非静态的属性
System.out.println(y);正确
doi();这句话也错因为静态方法中不能直接调用非静态方法
doi2();正确


——————————————————————————————————————————
回楼主,如果你这个对象中有非静态方法的话那是可以调用的,因为非静态方法就是用new出来的对象调用的
参考技术A 最常见的,main方法必须为静态方法,就不能调用本类中非static的方法。

class Example
void notStaticMethod()

static void staticMethod()

public static void main(String[] args)
staticMethod(); //正确
notStaticMethod(); //报错

c# 有调用一个类的静态方法,是不是执行这个类的构造函数

c# 有调用一个类的静态方法,是否执行这个类的构造函数
静态构造函数?有静态构造函数吗?

不会,类的构造函数是用来实例化一个该类对象的。
静态方法属于类,非静态方法属于类的对象。
我们调用静态方法时是直接通过"类的名称."的方式来调用的。
而非静态方法则需通过类的实例来调用,这时才需要调用构造函数来进行实例化得到一个该类的对象,然后用"对象名."的方式来调用。
参考技术A 执行这个类中的静态构造函数,如果没有则默认执行一个空的无参构造函数... 参考技术B 静态类不能包含构造函数,但仍可声明静态构造函数以分配初始值或设置某个静态状态,这是静态类构造函数的唯一作用了,不然你想,静态类都不能实例化,还怎麽“构造”呢?

当然有静态构造函数了,单件模式就要用的嘛
给你个msdn的链接看一下就知道了
http://msdn2.microsoft.com/zh-cn/library/k9x6w0hc(VS.80).aspx本回答被提问者采纳

以上是关于JAVA中"静态方法中不能直接调用非静态的属性和方法"何以理解?举个例子的主要内容,如果未能解决你的问题,请参考以下文章

java类 2.18

JAVA 静态方法不能访问直接

Java中的静态方法是啥?

java中静态变量和静态方法的优缺点

java中静态方法中调用非静态方法

java复习路4