java中的this问题?

publicclassF{publicvoida(Objectargs1){}publicvoidb(Stringargs2){this.a(args2);此处this调... public class F {
public void a(Object args1) {

}
public void b(String args2) {
this.a(args2);

此处this调用方法有什么用,如何才能让这东西输出一个结果

}
public static void mian(String[] args) {
new F().b(null);
}
}
展开
 我来答
澈丶233
2020-06-29 · TA获得超过169个赞
知道小有建树答主
回答量:446
采纳率:94%
帮助的人:106万
展开全部
我理解的是,this代表这个类本身,对于F.java这个类而言,相当于在说“我”,方法b中调用了this.a(),可以理解为方法b调用了“我的a方法”。
对于这个例子而言,其实加不加this,结果都一样,但对于这个例子就有用了:
假设有一个类叫G.java,其拥有一个和F.java一模一样的方法a:
public class G {
public void a(Object args1) {

}
}
并且此时,F继承自G:
public class F extends G{
public void a(Object args1) {

}
public void b(String args2) {
this.a(args2);
super.a(args2);
}
此时注意我上面写的b方法,b方法中既要调用F自己的a方法,又要调用父类G中的a方法,为防止出现歧义,我们在调用F的a方法时,就使用this作为修饰;调用G的a方法时,就使用super作为修饰,这样就一目了然不是吗。
然后如果不加this,比如b方法定义为:
public void b(String args2) {
a(args2);
}
其实默认就是调用了F自身的a方法,可以理解为不加this时,java会默认给它加上this。
另外说一下你的例子如何输出一个东西,你需要在你的a方法里加上比如:
public void a(Object args1) {
System.out.println(args1.toString());
}
在你的main函数中不要传入null,否则将引起空指针异常,你可以传入比如:
public static void mian(String[] args) {
new F().b("哈哈哈");
}
这样运行时最终会在控制台输出“哈哈哈”
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式