抽象类和接口
抽象类
why:为了解决父类不能实例化对象的问题。
how:abstract class
抽象方法
why:父类中的一些方法,无法写方法体。
how:abstract foo();
特点:子类必须重写父类的抽象方法,除非子类也是一个抽象类。
接口
why:为了解决父类单根性。
特点:一个类只能继承(extends)一个父类,但是可以实现(implement)多个接口。
功能:1、体现类的能力。2、接口定义一种规范和标准。
语法:接口中的属性都是静态常量;接口中的方法都是抽象方法。接口可以多继承。
面向接口编程
定义接口(定义规范和标准)
各自按照接口进行开发(面向对象的思想)
模块集成 - 项目
final
类:最终类,不能被继承。代表是String
属性:常量,不能被修改。
方法:最终方法,不能重写。
Ink接口
public interface Ink {
public String getColor();
}
Black类
public class Black implements Ink{
public String getColor(){//重写getColor()
return "黑色";
}
}
Color类
public class Color implements Ink{//重写getColor()
public String getColor(){
return "彩色";
}
}
Paper接口
public interface Paper {
public String getSize();
}
A4
public class A4 {
public String getSize(){//重写getSize()
return "A4";
}
}
B5
public class B5 implements Paper{
public String getSize(){//重写getSize()
return "B5";
}
}
Printer
public class Printer {
private Ink ink;
private Paper paper;
String band;
public Printer(String band){
this.band = band;
}
public Ink getInk() {
return ink;
}
public Paper getPaper() {
return paper;
}
public String getBand() {
return band;
}
public void setInk(Ink ink) {
this.ink = ink;
}
public void setPaper(Paper paper) {
this.paper = paper;
}
public void print(String str){
System.out.println(band+"正在使用"+ink.getColor()+"墨盒和"+paper.getSize()+"纸张打印:");
System.out.println(str);
}
}
Customer
public class Customer {
public static void main(String[] args) {
Ink ink = new Black();
Paper paper = new B5();
Printer printer = new Printer("佳能");
printer.setInk(ink);
printer.setPaper(paper);
printer.print("1111");
}
}
运行结果
ljm要加油