黑马程序员技术交流社区
标题:
主函数中可以使用this吗?为什么?
[打印本页]
作者:
雨晴
时间:
2013-9-23 14:55
标题:
主函数中可以使用this吗?为什么?
本帖最后由 杨增坤 于 2013-9-24 08:27 编辑
今天在看多线程时,老师在run方法中用this调用getName()来获取线程名称,
于是我也在主函数中用this.getName()来获取主线程的名称,但报错,后来才发现原来.....
不过我还是看看大家是否很快能发现问题,因为我差不多3分钟才明白是怎么回事!!!
作者:
jìng╮煜
时间:
2013-9-23 15:01
不带你这样玩的,资源共享嘛.有问题就说出来.```````````````解决了也说一下交流
作者:
doitforyou
时间:
2013-9-23 15:09
哈,我凭感觉说,应该是匿名内部类的原因,不知道对不对。
主函数中肯定要明确对象的,不能直接用this。
所以可能使用了匿名内部类,重写方法,使用this调用其他方法。
作者:
陌上尘
时间:
2013-9-23 16:39
this.getName()中的getName()方法是Thread类中的方法,而非Main类中的方法,所以会出错。
自己胡说的,不知道对不对,请大师指点啊~{:soso_e121:}
作者:
杨增坤
时间:
2013-9-23 16:55
主函数是程序的入口,也是一个静态的函数,只要是类一加载,那么就会调用此方法,此时还没有对象,所以使用this的话,就会出错误,
也可以从另一方面考虑,抛出this的原因,从方法方面考虑。如果你使用的是this.getName(),也许是在一个测试类中使用的,此时该对象中没有getName()方法,所以也会报错。
作者:
梁贺
时间:
2013-9-23 18:17
主函数中可以使用this么? 答案绝对是不可以。
因为静态优先于对象存在,它是类加载的时候而加载的。随着类的消失而消失。
而this是哪个对象在调用的时候this为哪个对象。 此时对象还没创建,所以不能使用this关键字。
你老师的那个this是指当前线程类,它的getName()方法是可以的。
作者:
yting_xmei1129
时间:
2013-9-23 18:51
这个肯定不可以啊!主函数只是提供了一个程序的入口而已,就相当于一个房门,你都没进房门,怎么能知道房门里面有什么呢是不是。所以主函数也是这个道理,主函数跟你的类并没有什么联系,并不能用 this ,主函数随便写在哪里都可以,比如下面的代码--->
public class MainDemo1 {
public static void main(String[] args) {
System.out.println("123");
System.out.println(new MainT().getMain());
}
}
class mainTest {
public static void main(String[] args) {
System.out.println("456");
System.out.println(new MainT().getMain());
}
}
class MainT {
private int main = 20;
public int getMain() {
return main;
}
public void setMain(int main) {
this.main = main;
}
}
这个运行的时候要你选择主函数,也证明了主函数可以随便放在哪里了
希望可以帮到楼主、、、
The you smile until forever 、、、、、、、、、、、、、、、、、、、、、
作者:
乔兵
时间:
2013-9-23 19:34
如果问题已经解决,请重新编辑帖子,修改帖子的主题分类为“已解决”{:soso_e181:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2