• 第七章-复用类-继承语法-1


    练习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() 方法,因为将产生递归。

  • 相关阅读:
    编辑器、编译器、文件、IDE等常见概念辨析
    二叉排序树的实现
    模板
    Codeforces Round #690 (Div. 3)
    Educational Codeforces Round 100 (Rated for Div. 2)
    Codeforces 414-B. Mashmokh and ACM(数位dp)
    Codeforces 339D-Xenia and Bit Operations(线段树)
    Educational Codeforces Round 96 (Rated for Div. 2) 题解
    2019-2020 ICPC Northwestern European Regional Programming Contest (NWERC 2019)
    2018-2019 ICPC Northwestern European Regional Programming Contest (NWERC 2018)
  • 原文地址:https://www.cnblogs.com/changlili/p/11519512.html
Copyright © 2020-2023  润新知