练习2: 从Detergent 中 继承产生一个新的类。覆盖scrub() 并添加一个名为sterilize() 的新的方法。

一:我的答案:

 1 package com.learnJava.test;
 2 
 3 /**
 4  * @Author zhuchangli
 5  * @Date 2019/9/14
 6  **/
 7 class Cleanser{
 8     private String s = "Cleanser";
 9     public void append(String a) { s += a; }
10     public void dilute(){ append("dilute()"); }
11     public void applay(){append("applay()");}
12     public void scrub(){append("scrub()");}
13     public String toString(){return s;}
14 
15     public static void main(String [] args){
16         Cleanser x = new Cleanser();
17         x.dilute();
18         x.applay();
19         x.scrub();
20         System.out.println(x);
21     }
22 }
23 //洗涤剂
24 public class Detergent extends Cleanser{
25     public void scrub(){
26         append("Detergent.scrub()");
27         super.scrub();
28     }
29 
30     // foam 泡沫
31     public void foam(){ append("foam()");}
32 
33     public static void main(String [] args){
34         Detergent x = new Detergent();
35         x.dilute();
36         x.applay();
37         x.scrub();
38         x.foam();
39         System.out.println(x);
40         System.out.println("Testing base class");
41         Cleanser.main(args);
42     }
43 }
 1 package com.learnJava.test;
 2 
 3 /**
 4  * @Author zhuchangli
 5  * @Date 2019/9/14
 6  **/
 7 public class Sterilize extends Detergent{
 8     public void scrub(){
 9         append(" Sterilize.scrub()");
10     }
11 
12     public void sterilize(){
13         append("sterilize()");
14     }
15 
16     public static void main(String [] args){
17         Sterilize s = new Sterilize();
18         s.scrub();
19         System.out.println(s);
20     }
21 }

二:参考答案:

 1 package com.learnJava.test;
 2 
 3 /**
 4  * @Author zhuchangli
 5  * @Date 2019/9/14
 6  **/
 7 
 8 // 消毒
 9 public class Sterilizer extends Detergent{
10     public void scrub(){
11         append("Sterilizer scrub()");
12     }
13 
14     public void sterilizer(){
15         append(" Detergent sterilizer()");
16     }
17 
18     public static void main(String [] args){
19         Sterilize s = new Sterilize();
20         s.dilute();
21         s.applay();
22         s.scrub();
23         s.foam();
24         s.sterilize();
25         System.out.println(s);
26         System.out.println("Testing base class: ");
27         Detergent.main(args);
28     }
29 }

继承类的 都是相同的。

三:总结

1,在每个类中都设置一个main()方法的技术可以使每个类的单元测试都变得简便易行,而且在完成单元测试之后也不用删除main() 方法,可留作下次测试。

2,为了继承,一般的规则是将所有的数据成员都指定为private,将所有的方法指定为public。如本节  Cleanser 没有加任何访问权限修饰词,那么默认的访问权限为包访问权限,仅允许包内成员访问,如果从其他包中继承Cleanser,那么只能访问public成员。

3,采用super 调用基类方法,在scrub中,并不能直接调用scrub() 方法,因为将产生递归。

 posted on 2019-09-14 16:44  岂曰-无衣  阅读(167)  评论(0编辑  收藏  举报