一个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);
}
} 展开
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);
}
} 展开
2个回答
展开全部
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方法。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询