一个java程序中有 两个main()函数,一个在public类中,另一个在没有修饰符的类中,先执行哪个呢? 50

classCleanser{privateStrings="Cleanser";publicvoidappend(Strings){s+=s;}publicvoiddil... class Cleanser{
private String s="Cleanser";
public void append(String s){s+=s;}
public void dilute(){
append("diute()");
}
public void apply(){
append("apply()");
}
public void scrub(){
append("scrub()");
}
public String toString(){return s;}
public static void main(String[] args){
Cleanser x=new Cleanser();
x.dilute();x.apply();x.scrub();
System.out.print(x);
}
}
public class Detergent extends Cleanser {
public void scrub(){
append("Detergent.scrub()");
super.scrub();
}
public void foam(){append("foam()");}

public static void main(String[] args) {
Detergent x=new Detergent();
x.dilute();
x.apply();
x.scrub();
x.foam();
System.out.print(x);
System.out.println("Testing base class: ");
Cleanser.main(args);

}

}
展开
 我来答
xjf5562
2016-07-28 · TA获得超过1190个赞
知道小有建树答主
回答量:896
采纳率:75%
帮助的人:742万
展开全部
public 类中的main方法是应用程序的入口。非public 类中的main方法,只能由其他方法来调用,不能作为程序的入口来使用。
追问
但是这个程序运行时不能正常完全输出啊,这程序哪里出错了吗?而且,如果把Cleanser类的main函数注释了就不能运行了,这是为什么呢
追答
这个程序没有按你的期望值输出,原因在Cleanser类的append方法中。
public void append(String s){s+=s;}

你的预期是把参数 s 追加到类字段 s 的末尾上,但字段名为 s ,参数名为 s ,参数名就屏蔽了类字段 s 。正确的写法是:public void append(String s){this.s+=s;}

至于说,把Cleanser中的main方法注释掉,这是不行的。因为在Detergent类的main方法调用了Cleanser中的main方法。
璩山彤2k
2016-07-28 · TA获得超过296个赞
知道小有建树答主
回答量:386
采纳率:75%
帮助的人:73.6万
展开全部
先执行public类中的main
追问
但是这个程序运行时不能正常完全输出啊,这程序哪里出错了吗?而且,如果把Cleanser类的main函数注释了就不能运行了,这是为什么呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式