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

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

关于java中的main方法
首先,main方法不能直接调用非静态方法,要调用非静态方法只能通过new实现,new后会调用类的构造器,所以main调用非静态方法那么就一定会调用其构造器;其次,构造器不属于静态的块,类的加载顺序中静态的会先加载,同样静态的会按顺序加载,你可以试试你就会发现静态的在构造器前或后都会比构造器先加载 最后...

为什么Java中的main方法必须是public static void的?
大彬:第一,为什么 main 方法是公有的(public)?Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。而对于main方法来说,我们需要通过JVM直接调用它,那么就需要它的限定符必须是public的,否则是无法访问的。大彬:第二,为什么 main 方法是静态的...

Java提示main方法不能声明为静态。
}}public class Knowedge { public static void main(String[] args) { \/* 这里提示main()不能修饰为静态=,只有在静态类型或顶级类型中才能声明静态方法。 *\/ Tree most = new Tree("世界爷", 2000, 1000); System.out.println(most.Talk()); }} ...

为什么main方法是public static void
main是java程序执行的入口,原则上他不属于任何类,但是由于java是一门面向对象的语言,在java中,万事万物皆为对象,这也就导致了main函数需要依赖于类而存在。因此他必须是类中的函数,但是肯定不能为成员函数(成员函数为类的一个特定的动作),因此只能static静态函数。另外,他需要具有外部访问的特征...

java 在主函数中调用函数的方法
调用说明:java中的main方法是静态的,用于程序的入口,在静态方法中无法调用非静态方法,只能调用静态方法。想调用静态方法的话就要先生成该类的一个对象,通过对象调用非静态方法。调用举例:public class A{ public static void main(String[] args){ A a = new A();a.aaa();} public void aaa...

代码必须包含一个main的共有main的静态方式?
是的,在Java语言中,一个类必须包含一个名为“main”的静态方法,才能作为程序的入口点。该方法必须遵循以下形式:public static void main(String[] args)在这个示例中,“public”是访问修饰符,表示该方法可以被任何地方调用。“static”表示该方法是一个静态方法,可以直接通过类名调用,而不需要实例...

java中main方法里面调用非静态方法。
非静态方法()的方式来访问!static是一种访问修饰符,在java中可以修饰代码块、方法和属性 1、静态块:用于在类加载之前完成一些初始化操作,仅会执行一次 2、静态方法:可以使用类名和对象调用,只能直接访问静态成员,无法访问非静态成员 3、静态属性:可以使用类名和对象名调用,多个对象共享 ...

...方法调用另一个方法需要将被调用的方法声明static
不是的,但如果你在main方法里面调用的话就得是static了,因为main本来就是静态方法,只能调用静态的方法了。如果不是在main方法里面就可以。

java Main函数怎么调用其他函数。 其他类。
一般,在静态的方法中,若要|-直接-|调用其他方法,那么被调用的也必须是静态。你的程序中包含两个部分 方法getInt() 和主函数main 其中主函数是静态(main必须是静态)。那么要在main中直接调用getInt()是不可以了,因为getInt没有用static修饰,也就是说getInt不是静态。将public void getInt() ...

java 1.类方法中只能调用本类中的类方法???2.可以直接调用???
可以new 一个实例之后再调用的,也可以调用别的类的静态的方法的。静态方法不需要声明对象就可以调用。

相似回答