java的接口与继承
1.CSprinter.java
public class CsPrinter extends PrinterModel implements Printer {
public void printer() {
System.out.println("我是彩色打印进!!");
System.out.println("我打印的图片棒棒的!!!");
}
}
2.HBprinter.java
public class HbPrinter implements Printer {
public void printer() {
HbPrinterModel hbPrinter = new HbPrinterModel();
hbPrinter.setName("黑白");
System.out.println("我是黑白打印机!!!");
System.out.println("我打印的图片很有味道!!!");
}
}
3.HBprinterModel.java
public class HbPrinterModel extends PrinterModel {
private int count;
private int zfPrint;
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public int getZfPrint() {
return zfPrint;
}
public void setZfPrint(int zfPrint) {
this.zfPrint = zfPrint;
}
}
4.printer.java
public interface Printer {
public abstract void printer();
}
这里创建一个接口,关键词interface
5.PrinterModel.java
public class PrinterModel {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
6.PrinterTest.java
import java.util.Scanner;
public class PrinterTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请选择打印机:1彩色、2黑白");
int a = sc.nextInt();
Printer printer = null;
if (a == 1) {
printer = new CsPrinter();
} else if (a == 2) {
printer = new HbPrinter();
}
printer.printer();
}
}
总结:
简单的“打印机”代码,本来寥寥几行就能完成,拆分成这么多类,也是良苦用心。一个print.java接口,一个printModel.java父类。虽说目前看起来比较繁琐,但是当对象成百上千时,接口及抽象类的功能也就凸显出来。
附:接口更多体现的是一种规范,抽象类体现的是一种模板式设计。这种说法可能略显官方,白话一点可以说,接口客观一点儿,它更多体现的是让对象遵守规范,我写好了在这边,你照着我的标准来就行了。而抽象类更主观一点,看子类都怎么设计的,有啥共通点没?有的话就把它们提出来,写在一个抽象类里。