Java 习题 (68)

题目:
修改Detergent.java, 让它使用代理。

解答:
先展示Detergent.java 代码:

// Detergent.java 文件
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 exerciseThree extends Cleanser{
    public void scrub() {
        append(" Detergent.scrub() ");
        super.scrub();
    }

    public void foam() {
        append(" foam() ");
    }

    public static void main(String[] args){
        exerciseThree three = new exerciseThree();
        three.dilute();
        three.apply();
        three.scrub();
        three.foam();
        System.out.println(three);
        System.out.println("Testing base class");
        Cleanser.main(args);
    }
}

结果如下:
在这里插入图片描述


根据上面代码,修改来完成这题目:

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 exerciseEleven {
	// 代理:
	// 这是继承与组合之间的中庸之道,因为我们将一个成员对象置于所要构造的类中 (就像组合).
	// 但与此同时我们在新类中暴露了该成员的所有方法 (就像继承).
    private Cleanser cleanser = new Cleanser();

    public void append(String a) {
        cleanser.append(a);
    }

    public void dilute() {
        cleanser.dilute();
    }

    public void apply() {
        cleanser.apply();
    }

    public String toString() {
        return cleanser.toString();
    }

    public void scrub() {
        append(" DetergentDelegation.scrub() ");
        cleanser.scrub();
    }

    public void foam() {
        append(" foam() ");
    }

    public static void main(String[] args){
       exerciseEleven three = new exerciseEleven();
       three.dilute();
       three.apply();
       three.scrub();
       three.foam();
       System.out.println(three);
       System.out.println("Testing base class: ");
       Cleanser.main(args);
    }
}

结果如下:
在这里插入图片描述
如果觉得不错,就用点赞或者关注或者留言,来代替五星好评~
谢谢各位~

©️2020 CSDN 皮肤主题: 终极编程指南 设计师:CSDN官方博客 返回首页