Java中main函数只能调用同类中的静态方法?

Java中main函数只能调用同类中的静态方法?
我在主类中写了一个public方法。提示错误、要转换为static、为什么、主函数不可以调用本类中的非静态方法?

这么给你说把 静态方法、变量都是属于类的,当你调用类时那些静态方法和属性就已经存在了,也就是说直接调用类名.属性/方法名就可以,而非静态属性和方法必须得实例化对象才能调用,你可以这么理解,当程序跑到静态方法里时,非静态方法这时还是未存在的,
不过静态调用非静态也是可以的,不过不能直接调用罢了,你得先实例化对象后再调用才行追问

哦哦、、谢谢!!!

追答

楼主给分呀

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-29
public class TT{
public static void main(String[] args){
TT t = new TT();
t.fun();
}
void fun(){
System.out.println("hehe");
}
}

如果想调用本类中的非静态方法可以这么来写。

追问

public class First {
public static void main(String[] args) {

InPut("shuzu");
}

public static void InPut(String t){
System.out.println(t);
}
}
为什么InPut方法少了static就不行?

追答

对于一般的非static成员变量或方法,需要有一个对象的实例才能调用,所以要先生成对象的实例,他们才会实际的分配内存空间。而对于static的对象或方法,在程序载入时便已经分配了内存空间,他只和特定的类想关联,无需实例化。

本回答被提问者采纳
第2个回答  2013-09-25
mian调用本类方法,都是掉用static的。你可以把你写的那个方法封装一下,封装到一个类中,然后在main中new一个该类对象,调用该方法。
第3个回答  2013-09-25
可以,看代码:
public class SSss {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SSss s = new SSss();
System.out.println(s.xxx("cccc"));
}
String xxx(String aa){

aa += "*OK*";
return aa;
}
}
必须可以!
第4个回答  2021-02-19

如果不想深究可以记住一句话:静态成员方法只能访问静态成员

相似回答