程序功能:创建打印机类Printer,定义抽象方法Print()。 创建针式打印机类DotMatrixtPrinter和墨式打印机InkpetPrinter两个子类,修改测试类,实现该打印机打印。

程序功能:创建打印机类Printer,定义抽象方法Print()。 创建针式打印机类DotMatrixtPrinter和墨式打印机InkpetPrinter两个子类,并在各自类中重新print方法,编写测试类实现打印机进行打印。再增加一个激光打印机子类LaserPrinter,重新print()方法,修改测试类,实现该打印机打印。

Printer抽象打印机类,代码如下:

/**
 *   Author:Xu Zheng Wei
 *   E-mail:2518298846@qq.com
 *   程序功能:总目标是:创建打印机类Printer,定义抽象方法Print()。
 *   创建针式打印机类DotMatrixtPrinter和墨式打印机InkpetPrinter两个子类,
 *   并在各自类中重新print方法,编写测试类实现打印机进行打印。
 *   再增加一个激光打印机子类LaserPrinter,重新print()方法,
 *   修改测试类,实现该打印机打印。
 *
 *   现在代码是创建抽象打印机类。
 */

package dibazhang.three;

public abstract class Printer {      //抽象打印机类。

    public abstract void print();    //抽象方法,实现打印。
}


DotMatrixPrinter针式打印机类,代码如下:

/**
 *   Author:Xu Zheng Wei
 *   E-mail:2518298846@qq.com
 *   程序功能:总目标是:创建打印机类Printer,定义抽象方法Print()。
 *   创建针式打印机类DotMatrixtPrinter和墨式打印机InkpetPrinter两个子类,
 *   并在各自类中重新print方法,编写测试类实现打印机进行打印。
 *   再增加一个激光打印机子类LaserPrinter,重新print()方法,
 *   修改测试类,实现该打印机打印。
 *
 *   现在代码是创建针式打印机类。
 */

package dibazhang.three;

public class DotMatrixPrinter extends Printer {     //针式打印机类。

    public void print() {                           //打印。
        System.out.println("打印速度慢,效果差,噪音高");
    }
}


InkpetPrinter喷墨打印机类,代码如下:

/**
 *   Author:Xu Zheng Wei
 *   E-mail:2518298846@qq.com
 *   程序功能:总目标是:创建打印机类Printer,定义抽象方法Print()。
 *   创建针式打印机类DotMatrixtPrinter和墨式打印机InkpetPrinter两个子类,
 *   并在各自类中重新print方法,编写测试类实现打印机进行打印。
 *   再增加一个激光打印机子类LaserPrinter,重新print()方法,
 *   修改测试类,实现该打印机打印。
 *
 *   现在代码是创建喷墨打印机类。
 */

package dibazhang.three;

public class InkpetPrinter extends Printer {    //喷墨打印机类。

    public void print() {                      //打印。
        System.out.println("打印效果介于针式和激光打印机之间");
    }
}


LaserPrinter激光打印机类,代码如下:

/**
 *   Author:Xu Zheng Wei
 *   E-mail:2518298846@qq.com
 *   程序功能:总目标是:创建打印机类Printer,定义抽象方法Print()。
 *   创建针式打印机类DotMatrixtPrinter和墨式打印机InkpetPrinter两个子类,
 *   并在各自类中重新print方法,编写测试类实现打印机进行打印。
 *   再增加一个激光打印机子类LaserPrinter,重新print()方法,
 *   修改测试类,实现该打印机打印。
 *
 *   现在代码是创建激光打印机类。
 */

package dibazhang.three;

public class LaserPrinter extends Printer {    //激光打印机类。

    public void print() {                     //打印。
        System.out.println("打印速度快,噪音小,效果好");
    }
}


TestPrinter测试类,实现各种打印机打印,代码如下:

/**
 *   Author:Xu Zheng Wei
 *   E-mail:2518298846@qq.com
 *   程序功能:总目标是:创建打印机类Printer,定义抽象方法Print()。
 *   创建针式打印机类DotMatrixtPrinter和墨式打印机InkpetPrinter两个子类,
 *   并在各自类中重新print方法,编写测试类实现打印机进行打印。
 *   再增加一个激光打印机子类LaserPrinter,重新print()方法,
 *   修改测试类,实现该打印机打印。
 *
 *   现在代码是创建测试类,实现各种打印机打印。
 */

package dibazhang.three;

public class TestPrinter {                         //测试类,实现各种打印机打印。
    public static void main(String[] args) {

        Printer dprinter=new DotMatrixPrinter();   //创建针式打印机对象并打印
        dprinter.print();

        Printer iprinter=new InkpetPrinter();      //创建喷墨打印机对象并打印
        iprinter.print();

		Printer lprinter=new LaserPrinter();       //创建激光打印机对象并打印
		lprinter.print();
    }
}


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

  • 7
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
以下是 UML 图: ``` +----------------+ | Printer | +----------------+ | + print() | +----------------+ ^ | | +----------------+ | InkjetPrinter | +----------------+ | + print() | +----------------+ ^ | | +----------------+ | LaserPrinter | +----------------+ | + print() | +----------------+ ^ | | +----------------+ | Report | +----------------+ | - printer | +----------------+ | + foo() | | + setPrinter() | +----------------+ ``` 以下是 Java 代码: ```java // Printer.java public class Printer { public void print() { System.out.println("打印机打印"); } } // InkjetPrinter.java public class InkjetPrinter extends Printer { @Override public void print() { System.out.println("喷打印机打印"); } } // LaserPrinter.java public class LaserPrinter extends Printer { @Override public void print() { System.out.println("激光打印机打印"); } } // Report.java public class Report { private Printer printer; public void setPrinter(Printer p) { printer = p; } public void foo() { printer.print(); } } // Main.java public class Main { public static void main(String[] args) { Report report = new Report(); report.setPrinter(new InkjetPrinter()); report.foo(); report.setPrinter(new LaserPrinter()); report.foo(); } } ``` 在上述代码中,我们定义了三个,分别是 `Printer` 打印机、`InkjetPrinter` 喷打印机、`LaserPrinter` 激光打印机和 `Report` 报表。`InkjetPrinter` 和 `LaserPrinter` 都是 `Printer` 的子类,分别重写了 `print()` 方法。`Report` 中有一个 `Printer` 型的引用 `printer`,并且有一个用于注入具体打印机对象的 `setPrinter()` 方法和一个调用 `printer` 的 `print()` 方法的 `foo()` 方法。在 `Main` 中,我们创建了一个 `Report` 对象并注入了一个 `InkjetPrinter` 对象,然后调用了 `foo()` 方法,这时会输出“喷打印机打印”;接着我们又注入了一个 `LaserPrinter` 对象并再次调用了 `foo()` 方法,这时会输出“激光打印机打印”。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做个乖小孩i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值