黑马程序员技术交流社区
标题:
为什么编译报错?
[打印本页]
作者:
王琳
时间:
2013-3-6 16:02
标题:
为什么编译报错?
本帖最后由 王琳 于 2013-3-6 19:34 编辑
public static void main(String[] args)
{
int num = getNum();
System.out.println(num);
}
public int getNum()
{
int num = 1;
return num++;
}
开始用眼睛看的时候以为结果会是1,敲了一边代码后,一编译,报错了
11.png
(3.55 KB, 下载次数: 26)
下载附件
2013-3-6 15:57 上传
为什么会报这个错?
如果说我放在另一个class里调是不是就行了?
作者:
张卫刚
时间:
2013-3-6 16:13
//静态成员只能访问静态的,main是静态方法,你的getNum()方法不是静态的,所以报错了
作者:
戴乾刚
时间:
2013-3-6 16:14
静态放法中不能调用非静态方法,将getSum方法定义成静态的
放在另一个类中,如果该方法没有定义成静态方法,则要先创建该类对象才能调用。
作者:
罗正荣
时间:
2013-3-6 16:19
public static void main(String[] args)
{
int num = getNum();
System.out.println(num);
}
public static int getNum()//这里用static修饰
{
int num = 1;
return num++;
}
复制代码
*************************************************************************
class Demo
{
public static void main(String[] args)
{
Demo d = Demo();
int num = d.getNum();
System.out.println(num);
}
public int getNum()
{
int num = 1;
return num++;
}
}
复制代码
主函数是静态的 而你的getNum是非静态的,静态函数只能调用静态函数,你把getNum方法放在其他类中也是一样。非静态方法可以创建对象用对象调用。
作者:
牛合超
时间:
2013-3-6 16:46
是啊,static使用的时候是有限制的,总结一下,第一点,只能调用其它静态方法 ; 第二点,只能访问
静态数据,,第三点,不能使用关键字this和super,所以你的问题出现在第一点。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2