
正文
Eclipse的一个“bug”
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
标题之所以打上双引号,是因为暂时不知道怎么确定。
一个 .java文件里有两个类:public Bath;Soap。它们都有一个main()方法。
从命令行单独访问任意一个类的main()方法,都没毛病;从Eclipse里访问,也没毛病。
但是,如果public类(Bath)没有了public main()。在命令行访问非public的Soap的main()方法是没有毛病的,在Eclipse里却无法访问。
(《Java编程思想》这本书的确写的有一定的质量,但是表述逻辑太混乱了,而且存在很多的有毛病的地方)
package a2.package1.inheritance; /**
* <ol>
* <li>覆盖:方法签名必须与父类相同,实现应该不同;返回值、访问权限可变
* <li>访问权限只能拓宽,不能窄化
* </ol>
* @author LSH
*
*/
public class Detergent extends Cleanser{ @Override
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.println(x);
System.out.println("测试父类:");
/*此处直接调用main方法*/
Cleanser.main(args);
} } class Cleanser{
private String s = "Cleanser";
public void append(String a){s += a;}
public void dilute(){ append(" dilute()"); }
public void apply(){ append(" apply()"); }
void scrub(){ append(" scrub()"); }
public String toString(){return s;} /**
* <span>
* 只有同文件内的公共类Detergent有main方法时,
* 该类的main方法才能被调用;
* Detergent没有main方法时,从命令行能调用该类的main方法。
* 或许,这就是Eclipse存在的一个“bug”
* </span>
* @param args 参数
*/
public static void main(String[] args) {
Cleanser x = new Cleanser();
x.dilute();
x.apply();
x.scrub();
System.out.println(x);
}
}








