首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java面试 >

JAVA 超类跟子类均有main方法 超类和子类调换位置后运行结果不一样

2012-12-25 
JAVA 超类和子类均有main方法 超类和子类调换位置后运行结果不一样class Cleanser {private String s ne

JAVA 超类和子类均有main方法 超类和子类调换位置后运行结果不一样
class Cleanser {
  private String s = new String("Cleanser");
  public void append(String a) { s += a; }
  public void dilute() { append(" dilute()"); }
  public void apply() { append(" apply()"); }
  public void scrub() { append(" scrub()"); }
  public void print() { System.out.println(s); }
  public static void main(String[] args) {
    Cleanser x = new Cleanser();
    x.dilute(); x.apply(); x.scrub();
    x.print();
  }
}
public class Detergent extends Cleanser {
  // Change a method:
  public void scrub() {
    append(" Detergent.scrub()");
    super.scrub(); // Call base-class version
  }
  // Add methods to the interface:
  public void foam() { append(" foam()"); }
  // Test the new class:
  public static void main(String[] args) {
    Detergent x = new Detergent();
    x.dilute();
    x.apply();
    x.scrub();
    x.foam();
    x.print();
    System.out.println("Testing base class:");
    Cleanser.main(args);
  }
} ///:
将子类放在超类前面运行结果如  
Cleanser dilute() apply() scrub()
将超类放在子类前面 运行结果如下
Cleanser dilute() apply() Detergent.scrub() scrub() foam()
Testing base class:
Cleanser dilute() apply() scrub()
[解决办法]
看你运行的是哪个类
java Detergent 
还是
java Cleanser 

如果是在eclipse中,可以选择run - run configuration-然后选择一个类

热点排行