1、知识点
抽象类,接口
2、代码:接口的使用
需求:开发打印机
纸张类型:A4、B5
墨盒和纸张都不是打印机厂商提供的
打印机厂商要兼容市场上的墨盒、纸张
接口:Paper
/**
* 这是纸张大小的接口
*/
package printer;
public interface Paper {
//纸张的大小
public String getSize();
}
接口:InkBox
/**
* 这是墨盒的接口
*/
package printer;
public interface InkBox {
public String getColor();
}
Paper接口的实现类1:
package printer;
public class A4Paper implements Paper {
public String getSize() {
return "A4";
}
}
Paper接口的实现类2:
package printer;
public class B5Paper implements Paper {
public String getSize(){
return "B5";
}
}
InkBox接口的实现类1:
package printer;
public class BlackWhiteInk implements InkBox {
public String getColor() {
return "黑白";
}
}
InkBox接口的实现类2:
package printer;
public class ColorfulInk implements InkBox {
public String getColor() {
return "彩色";
}
}
接口的使用:
/**
* 设计原则:多用组合,少用继承
* 组合:一个类里面有其他类的属性
*/
package printer;
public class Printer {
InkBox inkBox;//这叫做组合
Paper paper;
//设置打印墨盒
public InkBox getInkBox() {
return inkBox;
}
public void setInkBox(InkBox inkBox) {
this.inkBox = inkBox;
}
public Paper getPaper() {
return paper;
}
public void setPaper(Paper paper) {
this.paper = paper;
}
//输出信息
public void show(){
System.out.println("请使用"+getPaper().getSize()+"纸进行"+getInkBox().getColor()+"打印。");
}
}
测试类:
package printer;
public class PrinterTest {
public static void main(String[] args) {
Printer printer = new Printer();
printer.setPaper(new A4Paper());//仔细体会
printer.setInkBox(new BlackWhiteInk());//仔细体会
printer.show();
System.out.println("----------");
printer.setPaper(new A4Paper());
printer.setInkBox(new ColorfulInk());
printer.show();
System.out.println("----------");
printer.setPaper(new B5Paper());
printer.setInkBox(new BlackWhiteInk());
printer.show();
System.out.println("----------");
printer.setPaper(new B5Paper());
printer.setInkBox(new ColorfulInk());
printer.show();
}
}
实现效果如下:
3、学习方法
之前:一直用Eclipse编写程序,不少部分是自动生成的
缺点:因为自动生成,使我们很容易忽略方法使用背后的逻辑和知识点之间的联系。
改进:每天的新知识点,必须用记事本至少写一个源文件。