美文网首页
Java——多态与面向接口编程的关系

Java——多态与面向接口编程的关系

作者: 大黑跟小白的日常 | 来源:发表于2019-09-14 00:06 被阅读0次

1、针对同一种行为,不同的对象会有不同的表现形式;

比如打印机都能打印

image.png
interface Printer {
    public void print();
}
class BlackAndWhitePrinter implements Printer {
    @Override
    public void print() {
        System.out.println("这是黑白打印---");
    }
}
class ColorPrinter implements Printer {
    @Override
    public void print() {
        System.out.println("这是彩色打印---");
    }
}
public class DuoTai {
    public static void main(String[] args) {
        Printer printer = new BlackAndWhitePrinter();
        printer.print();
        printer = new ColorPrinter();
        printer.print();
    }
}
image.png

2、面向接口编程;

接口定义了行为规范,多接口的组合封装,可以定义一个程序的骨架

//打印机类接口
interface Printer {
    //打印机能在纸上打印
    public void print(Paper paper);
    //打印机报备纸张信息
    public void showPaperIntroduce(String paperDesc);
}
//纸类接口
interface Paper {
    //纸张提供自己的类型
    public String getType();
    //纸张提供自己的规格说明
    public String viewIntroduce();
}

将接口中可以公共实现的方法抽离到抽象类

abstract class AbstractPaper implements Paper {
    protected String type;
    private AbstractPaper() {
    }
    protected AbstractPaper(String type) {
        this.type = type;
    }
    @Override
    public String getType() {
        return this.type;
    }
}
abstract class AbstractPrinter implements Printer{
    @Override
    public void showPaperIntroduce(String paperDesc) {
        System.out.println("打印机自动报备当前使用纸张:");
        System.out.println(paperDesc);
    }
}

具体子类实现

class A4 extends AbstractPaper {
    public A4(String type) {
        super(type);
    }
    @Override
    public String viewIntroduce() {
        return this.type + ":210×297";
    }
}
class A5 extends AbstractPaper {
    public A5(String type) {
        super(type);
    }
    @Override
    public String viewIntroduce() {
        return this.type + ":148×210";
    }
}
class BlackAndWhitePrinter extends AbstractPrinter {
    @Override
    public void print(Paper paper) {
        this.showPaperIntroduce(paper.viewIntroduce());
        System.out.println("这是" + paper.getType() + "黑白打印---");
    }
}
class ColorPrinter extends AbstractPrinter {
    @Override
    public void print(Paper paper) {
        this.showPaperIntroduce(paper.viewIntroduce());
        System.out.println("这是" + paper.getType() + "彩色打印---");
    }
}

具体使用程序

public class DuoTai {
    public static void main(String[] args) {
        Printer printer = new BlackAndWhitePrinter();
        printer.print(new A5("硬A5纸"));
        printer = new ColorPrinter();
        printer.print(new A4("软A4纸"));
    }
}
image.png

也可将接口如下修改,那么就程序骨架来说,又是另外一种规范了,则需要其他的具体实现方式

interface IPrinter {
    //装纸
    public void initPaper(IPaper paper);
    //打印,需要在打印时报备纸张信息,并且说明时什么类型的打印
    public void print();
    //报备纸张信息
    public void showPaperIntroduce();
}

一旦接口定义了程序的功能,那么程序实现,都得按照这个规范来实现,程序设计流程,在接口中方可体现

相关文章

  • Java——多态与面向接口编程的关系

    1、针对同一种行为,不同的对象会有不同的表现形式; 比如打印机都能打印 2、面向接口编程; 接口定义了行为规范,多...

  • Java 中接口和抽象类的 7 大区别!

    Java 是一门面向对象的编程语言,面向对象的编程语言有四大特征:抽象、封装、继承和多态。 而本文介绍的接口和抽象...

  • go语言学习(8)--Struct

    面向对象 go只支持封装,不支持继承和多态go是面向接口的编程,也可以说go所有对象都是继承了一个空接口java这...

  • java面向对象,多态,抽象,接口

    day09笔记【java面向对象,多态,抽象,接口】 1 多态的概述及其代码体现 A:多态(polymorphic...

  • java抽象类和接口小记

    Java抽象类和接口小记 Java抽象类和接口实现了java的多态.多态是面向对象程序语言的核心,在项目开发过程中...

  • 面向对象设计基础&原则

    面向对象设计基础 抽象 封装 继承 多态 面向对象设计原则 封装变化 多用组合,少用继承 针对接口编程,不针对实现编程

  • 摘要 |《计算机是怎样跑起来的》

    面向对象编程 流程图是面向过程,时序图面向对象类和对象的关系是饼干模具和饼干的关系继承、封装、多态是面向对象编程的...

  • ·接口

    第03天java面向对象 今日内容介绍 ·接口 ·匿名对象&final ·多态 ·接口 1.接口的概述 接口是功能...

  • Effective c++ 学习笔记(item41)

    # 理解模板编程的隐式接口和编译器多态 面向对象的编程思路以显示的接口和运行期的多态为主要提现。编写一个类数据被封...

  • Android-Interview

    Java 基础 1、 什么是面向对象(OOP)?2、 什么是多态?实现多态的机制是什么?3、 接口(Interfa...

网友评论

      本文标题:Java——多态与面向接口编程的关系

      本文链接:https://www.haomeiwen.com/subject/vvhdyctx.html