Java学习(超详细)九(接口)

目录

1. 为什么使用接口

2. 什么是接口

3. 创建接口的步骤

4. 接口是一种能力

5. 接口是一种约定

6. 面向对象接口编程实例


1. 为什么使用接口

为什么使用接口,前面我们学习了继承,我们都知道继承中子类只能继承一个直接父类,但很多场景下我们需要去继承多个父类,这该怎么办呢?这时接口就应运而生。

接口可以实现Java中的“多继承”

示例:

扫描二维码关注公众号,回复: 16369737 查看本文章
public interface Lock {}   //接口
public interface DoorBell {}     //接口
public class Door {}        //父类
public class SecurityDoor extends Door implements Lock,DoorBell{}    //子类

2. 什么是接口

  1. 接口的关键字是interface
  2. 接口的所有方法都是默认用public abstract修饰的(写与不写都可)
  3. 接口不能实例化
  4. 实现类必须实现接口的所有方法
  5. 实现类可以实现多个接口
  6. 接口中的变量都是静态常量

3. 创建接口的步骤

(1)创建接口

        (a)第一种方式创建,class修改为interface

        (b)第二种方式创建,直接创建interface

public interface USB {
    void charge();
}

(2)创建实现类

public class Phone implements USB{
    @Override
    public void charge() {
        System.out.println("充电");
    }
}

(3)调用接口

public class Test {
    public static void main(String[] args) {
        USB usb = new Phone();
        usb.charge();
    }
}

4. 接口是一种能力

公式:A  has  B【A拥有B 的能力(功能)】

===》推导出A implements B   【B是接口,A是实现类】

5. 接口是一种约定

1. 有些接口没有名称,没有方法

2. 有些接口需要通过注释约定接口的实现规则

6. 面向对象接口编程实例

开发打印机

        墨盒:彩色、黑白

        纸张类型:A4、B5

        墨盒和纸张都不是打印机厂商提供的

        打印机厂商要兼容市场上的墨盒、纸张

墨盒和纸张的规格是一种约定

打印机需要遵守这些约定

用面向接口编程的方式开发

        制定墨盒、纸张的约定或标准

        打印机厂商使用墨盒、纸张的标准开发打印机

        其他厂商按照墨盒、纸张的标准生产墨盒、纸张

public interface MoHe {
    String getMoHe();
}
public interface Paper {
    String getPaperType();
}
public class A4Paper implements Paper{
    @Override
    public String getPaperType() {
        return "A4";
    }
}
public class B5Paper implements Paper{
    @Override
    public String getPaperType() {
        return "B5";
    }
}
public class ColorMoHe implements MoHe{
    @Override
    public String getMoHe() {
        return "彩色墨盒";
    }
}
public class WhiteMoHe implements MoHe{
    @Override
    public String getMoHe() {
        return "黑白墨盒";
    }
}
public class Printer {
    private MoHe mohe;
    private Paper paper;
    public void print(){
        System.out.println("使用"+getMohe()+"在"+getPaper()+"纸张上打印");
    }

    public MoHe getMohe() {
        return mohe;
    }

    public void setMohe(MoHe mohe) {
        this.mohe = mohe;
    }

    public Paper getPaper() {
        return paper;
    }

    public void setPaper(Paper paper) {
        this.paper = paper;
    }
}
public class Test {
    public static void main(String[] args) {
        Printer printer = new Printer();
        MoHe moHe = new ColorMoHe();
        printer.setMohe(moHe);

        Paper paper = new A4Paper();
        printer.setPaper(paper);

        printer.print();
    }
}

猜你喜欢

转载自blog.csdn.net/jojo_oulaoula/article/details/131230466
今日推荐