zoukankan      html  css  js  c++  java
  • 第七章-复用类-继承语法-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() 方法,因为将产生递归。

  • 相关阅读:
    10.cocos2dx C++为Sprite添加触摸事件监听器
    9.多彩的幕布layer
    8.ZOrder
    7.cocos精灵创建和绘制
    6.cocos2d设置定时器
    5.cocos2d锚点
    4.cocos场景和层的调用
    文件导入导出
    两个整数相乘是否超限
    倒置字符串函数reverse
  • 原文地址:https://www.cnblogs.com/changlili/p/11519512.html
Copyright © 2011-2022 走看看