抽象类和接口

抽象类
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");
    }
}

运行结果

image.png

ljm要加油
原文地址:https://www.cnblogs.com/ljmmm1/p/14269056.html