黑马程序员技术交流社区
标题:
关于static代码,这个有没有错误?
[打印本页]
作者:
李节起
时间:
2012-4-5 23:55
标题:
关于static代码,这个有没有错误?
public class Something {
public static void main(String[] args) {
Something s = new Something();
System.out.println("s.doSomething() returns " + doSomething());
}
public String doSomething() {
return "Do something ...";
}
}
这个代码运行报错,为什么?
作者:
江远云
时间:
2012-4-6 00:02
主函数是静态,静态只能调用静态,doSomethint函数要加个static修饰
作者:
曾晓文
时间:
2012-4-6 00:36
调用本类方法时,静态方法不能调用非静态方法。你的代码在静态方法mian中调用了非静态方法 doSomething();
你既然已经new了Something对象,你可以通过Something对象来调用Something方法。如:System.out.println("s.doSomething() returns " + s.doSomething());
作者:
曾晓文
时间:
2012-4-6 00:37
调用本类方法时,静态方法不能调用非静态方法。你的代码在静态方法mian中调用了非静态方法 doSomething();
你既然已经new了Something对象,你可以通过Something对象来调用doSomething方法。如:System.out.println("s.doSomething() returns " + s.doSomething());
作者:
邓飞飞
时间:
2012-4-6 06:40
public class Something {
public static void main(String[] args) {
Something s = new Something();
System.out.println("s.doSomething() returns " +
s.doSomething()
);
//静态方法不可以调用非静态成员,
你的代码在静态方法mian中调用了非静态方法 doSomething(),既然你已经创建的对象,则可以对象来调用
doSomething方法
}
public String doSomething() {
return "Do something ...";
}
}
作者:
郑苑东
时间:
2012-4-6 07:37
静态的只能引用静态的成员变量。方法。。非静态的才什么都可以引用。。。而主函数是静态的。,,你自己写的doSomething()方法时非静态的方法。。所以报错。。。。。。
作者:
曹魁
时间:
2012-4-6 08:09
本帖最后由 曹魁 于 2012-4-6 08:33 编辑
静态函数是无法调用非静态函数的,
你的代码在静态方法mian中调用了非静态方法 doSomething(),
因此会出现提示错误:
QQ截图20120406080935.jpg
(17.79 KB, 下载次数: 34)
下载附件
2012-4-6 08:08 上传
无法从静态上下文中引用非静态方法
doSomething()
System.out.println("s.doSomething() returns " + doSomething());
正确做法:
public class Something
{
public static void main(String[] args)
{
Something s = new Something();
System.out.println("s.doSomething() returns " +
s.doSomething());
}
public String doSomething()
{
return "Do something ...";
}
}
作者:
欧阳才志
时间:
2012-4-6 08:50
主函数是静态的,构造方法也应该是静态的,弟弟。毕老师第课程第三天讲函数的时候提到过。我是初学,不知道是为什么,但是知道这是规定。
作者:
程旦
时间:
2012-4-6 09:26
静态函数是不能调用非静态函数的,你的主函数是静态的 当然回报错了。。。。。你把
public String doSomething() {
return "Do something ...";
}
改成静态的就行了
作者:
newlaw2013
时间:
2012-4-6 10:50
毕老师名言:
静态虽好,只能访问静态。
作者:
孙国军
时间:
2012-4-6 13:03
主函数是静态的,想要调用非静态的方法需要使用对象调用
即s.doSomething()调用
作者:
黑马老兵
时间:
2012-4-6 16:47
System.out.println("s.doSomething() returns " + doSomething()); 这句话有问题啊。如果你要调用doSomething()这个方法 要么把它声明成静态的,要么用对象调用。
作者:
冯瀚冰
时间:
2012-4-6 16:55
在静态主函数中调用了非静态方法 doSomething()既然已经有了Something对象s,调用s.doSomething()就好了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2