黑马程序员技术交流社区
标题:
java 继承类的问题
[打印本页]
作者:
~﹏~
时间:
2013-11-7 19:39
标题:
java 继承类的问题
本帖最后由 ~﹏~ 于 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);是什么用
作者:
miedongdong
时间:
2013-11-7 21:48
本帖最后由 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>
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2