package me.ybleeho; class Cleanser{ //清洁剂 private String s="Cleanser"; public void append(String a){s+=a;} public void dilute(){append("dilute");} //稀释 public void apply(){append("apply()");} //应用 public void scrub(){append("scrub()");} //洗擦 public String toSting(){return s;} public static void main(String[] args){ Cleanser x=new Cleanser(); x.dilute();x.apply();x.scrub(); System.out.println(x.toSting()); } } public class Detergent extends Cleanser{ //清洁剂 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(); System.out.println(x.toSting()); System.out.println("Testing base class:"); Cleanser.main(args); } }
输出结果:
Cleanserdiluteapply()Detergent.scrub()scrub()foam() Testing base class: Cleanserdiluteapply()scrub()
Cleanser和Detergent均含有main()方法。可以为每个类创建一个main()方法。这种在每个类中都设置一个main()方法的技术可使每个类的单元测试都变得简便易行。而且在完成单元测试之后,也无需删除main(),可以将其留待下次测试。
即使是一个程序中含有多个类,也只有命令行所调用的那个类的main()方法会被调用。因此,在此例中,如果命令行是java Detergent,那么Cleanser.main()仍然会被调用。即使一个类中只具有包访问权限,其public main()仍然是可访问的。
在此例中,可以看到Detergent.main()明确调用了Cleanser.main(),并将从命令行获取的参数传递给了它。当然,也可以向其传递任意的String数组。
时间: 2024-10-21 06:48:30