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);
    }
}

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值