A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ~﹏~ 中级黑马   /  2013-11-7 19:39  /  1325 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ~﹏~ 于 2013-11-7 19:42 编辑

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 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(){
                append("Detergent.scrub()");
                super.scrub();
               
        }
        public void foam() {append ("foam() ");}
        public static void main(String[] args){
                jicheng1 x= new jicheng1() ;
                x.dilute();
                x.apply();
                x.scrub();
                x.foam();
                System.out.println(x);
                System.out.println("TEst class");
                cleanser.main(args);
        }
}

这段调用方法
private String s= "cleanser";
public void append(String a){s +=a;}
public void dilute() {append("dilute()");}

是{append("dilute()");}调用append将dilute赋值给a么   另外最后的cleanser.main(args);是什么用

评分

参与人数 1技术分 +1 收起 理由
To + 1 赞一个!

查看全部评分

1 个回复

倒序浏览
本帖最后由 miedongdong 于 2013-11-7 21:54 编辑

这个代码有点奇葩,我本来以为有两个main函数是运行不了的,没想到可以的,因为主函数入口是public修饰的类那个
那我说说那个append的作用,其实就是字符串的拼接,我说一下大概的程序流程,希望能帮到你,有什么不足的请指出
  1. <p>
  2. class cleanser{
  3.          private String s= "cleanser";
  4.          public void append(String a){s +=a;}//这是3  此时 s="cleanser", a = "dilute()", </p><p>                                                                   //则 s+=a为:cleanserdilute() ,执行完后就跳转到子类的  4
  5.          public void dilute() {append("dilute()");}//  1 跳转这里,标注为2 调用了append(String a),跳转到  3
  6.          public void apply() {append ("apply()");}//5  安装之前的步骤,此时append(“apply()“)为:cleanserdilute()apply(),</p><p>                                                                          //执行完毕跳回子类6
  7.          public void scrub() {append(" scrub() ");}//
  8.          public String toString() {return s;}
  9.          public static void main(String [] args){
  10.                  cleanser x=new cleanser();
  11.                  x.dilute(); x.apply(); x.scrub();
  12.                  System.out.println(x);
  13.          }
  14. }

  15. public class jicheng1 extends cleanser {

  16.          public void scrub(){                    // 7
  17.                  append("Detergent.scrub()");//这里执行完后结果是:cleanserdilute()apply()Detergent.scrub()")
  18.                  super.scrub();//这里执行完后得到:cleanserdilute()apply()Detergent.scrub()")scrub()
  19.                  
  20.          }
  21.          public void foam() {append ("foam() ");}
  22.          public static void main(String[] args){
  23.                  jicheng1 x= new jicheng1() ;
  24.                  x.dilute();//1 跳转到父类的 2
  25.                  x.apply();//4  再跳到父类的5
  26.                  x.scrub();//6  由于这个方法子类覆盖了父类,所以执行子类的srub()方法 7
  27.                  x.foam();//8  最后执行这个是子类自身的方法,结果是:cleanserdilute()apply()Detergent.scrub()")scrub() foam()
  28.                  System.out.println(x);//最后就是打印结果了
  29.                  System.out.println("TEst class");
  30.                  cleanser.main(args);//这个也就是父类调用自身的静态方法,执行方法体就可以了</font>
  31.          }
  32. }</p>
复制代码

评分

参与人数 1技术分 +1 收起 理由
To + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马