本帖最后由 miedongdong 于 2013-11-7 21:54 编辑
这个代码有点奇葩,我本来以为有两个main函数是运行不了的,没想到可以的,因为主函数入口是public修饰的类那个
那我说说那个append的作用,其实就是字符串的拼接,我说一下大概的程序流程,希望能帮到你,有什么不足的请指出- <p>
- class cleanser{
- private String s= "cleanser";
- public void append(String a){s +=a;}//这是3 此时 s="cleanser", a = "dilute()", </p><p> //则 s+=a为:cleanserdilute() ,执行完后就跳转到子类的 4
- public void dilute() {append("dilute()");}// 1 跳转这里,标注为2 调用了append(String a),跳转到 3
- public void apply() {append ("apply()");}//5 安装之前的步骤,此时append(“apply()“)为:cleanserdilute()apply(),</p><p> //执行完毕跳回子类6
- 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.println(x);
- }
- }
- public class jicheng1 extends cleanser {
- public void scrub(){ // 7
- append("Detergent.scrub()");//这里执行完后结果是:cleanserdilute()apply()Detergent.scrub()")
- super.scrub();//这里执行完后得到:cleanserdilute()apply()Detergent.scrub()")scrub()
-
- }
- public void foam() {append ("foam() ");}
- public static void main(String[] args){
- jicheng1 x= new jicheng1() ;
- x.dilute();//1 跳转到父类的 2
- x.apply();//4 再跳到父类的5
- x.scrub();//6 由于这个方法子类覆盖了父类,所以执行子类的srub()方法 7
- x.foam();//8 最后执行这个是子类自身的方法,结果是:cleanserdilute()apply()Detergent.scrub()")scrub() foam()
- System.out.println(x);//最后就是打印结果了
- System.out.println("TEst class");
- cleanser.main(args);//这个也就是父类调用自身的静态方法,执行方法体就可以了</font>
- }
- }</p>
复制代码 |