java中静态的函数不可以调用非静态的函数吗?

在main中调用一个非静态的函数,提示错误说“非静态的函数不可以被静态的函数调用”

嗯,不可以调用的

静态的函数,为啥要叫静态呢 ?
因为它不动啊!
何为不动 ? 即是不管你这个类产生了多少个对象,这静态的属性或者函数都只有这么一个存在,也就是说每个类的实例中的静态成员都是同一个。

既然如此,你一个静态函数如果想要调用非静态的函数,那请问一下,您是想调用哪个对象的函数呢 ?您倒是静态的,不管哪个对象中都是您,可人家非静态的不是啊,人家每个对象中都不同的啊,这您一不做二不休就想去调用,那能成吗 ? 显然不行的。

那怎么办呢 ?
当然是使用实例对象来调用了,也就是说指定一个对象,让这个静态的知告诉上头,它要调用的非静态函数是属性哪个对象的。

如:
publiv class A {
public void main(String[] args) {
fuck(); //这里这样调用就不对了,因为没有指明是要调用哪个对象的fuck函数
A a = new A();
a.fuck(); //这里这样调用对了,指明说要调用a这个对象的fuck函数
}

void fuck() {}
}

比如,你的朋友问你:你的车买来多少年了 ?
你怎么回答 ?
你就得琢磨啊,这人家又没具体问你的什么车 ?
人家说是问你自行车了吗 ? 说是问你汽车了吗 ?
人家并没有。。
那你能直接回答说啥买了3年、5年了吗 。?
不能的!
所以,你就得问,你问的是啥车 ? 你不说你问的啥车我怎么知道我应该告诉你我什么车买了多少年啊。。
就这样,你就给他报个错!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-23
静态方法和实例方法的不同是,静态方法是在类加载的时候就已经编译了,而实例方法必须有实例的清空下才能使用。
A类有一个静态方法a,实例方法b 那么你调用A的时候可以直接A.a;但是调用b的时候必须先实例
new A().b这样才行本回答被提问者采纳
第2个回答  2012-04-22
你必须实例化那个函数所在的类,然后再调用实例的这个方法,或者这个方法改为static。
相似回答