接口与实现基础 DAY THREE

接口与实现

DAY TWO

目录

DAY ONE
第一节:接口
第二节:接口实现
DAY TWO
第三节:接口回调
第四节:接口与多态
第五节:接口参数
DAY THREE
第六节:面向接口编程


前言

自学Java总结的一些接口知识点。


第六节、面向接口编程

1.1abstract类与接口的比较

  • abstract类和接口都可以有抽象方法,但是abstract类既可以有抽象方法,也可以有非抽象方法,接口中只能有抽象方法。
  • abstract类中既可以有常量,也可以有变量,但是接口中只能有常量。

在程序设计时要根据具体的情况来选择使用abstract类还是接口。若不考虑继承问题,只需要若干个类给出某些重要的abstract方法的实现细节,就可以考虑使用接口。

1.2面向接口编程

接口的UML类图如下:
在这里插入图片描述

注意

  • 在程序设计时,学习怎样面对接口进行程序设计也是非常重要的。接口只关心操作,但不关心这些操作的具体细节,可以使我们把主要的精力放在程序的设计上,而不必拘泥于细节的实现。也就是说,可以通过在接口中定义若干个抽象方法,表明这些方法的重要性,方法体的具体内容及细节由实现该接口的类去实现。

  • 使用接口进行程序设计的核心思想是使用接口回调,就是接口变量存放实现该类的对象的引用,从而接口变量就可以回调类所重写的接口方法。

  • 利用接口也可以体现程序设计的“开-闭原则”,即对扩展开发,对修改关闭。

应用举例:
设计一个关于一些饮料的账单(如下图所示),展示出它的价格与数量
在这里插入图片描述

①问题的分析

在这里我们想要创建一个账单类,如果我们用某个具体的商品类去声明对象,那么我们的账单类将缺少弹性,应为一旦我们需要增加一商品,就需要改变账单类的代码。那么我们就需要将导致修改类的部分代码从该类中分离出去,使它和类中其他代码之间是松耦合关系以便维护,即将每可能的变化对应地交给实现接口的类。
②设计接口
根据以上的问题分析,首先设计一个接口Drinks,该接口应该有三个方法:
getname()、price()和number(),那么实现这个接口的类必须重写这几个接口方法。
③设计账单类
运用接口回调

例子5

Drinks.java//饮料类---接口

public interface Drinks {
    public String getName();
    void price();
    void number();
}


Bill.java//账单类
public class Bill {
    public void getBill(Drinks drinks){
        System.out.print(drinks.getName());
        drinks.getName();
        drinks.price();
        drinks.number();//接口回调
    }
}

NFSQ.java//农夫山泉
public class NFSQ implements Drinks{
    @Override
    public String getName() {

        return "农夫山泉";
    }

    @Override
    public void price() {
        System.out.println("2元/瓶");
    }

    @Override
    public void number() {
        System.out.println("还有100瓶"+"\n");
    }
}


Coke.java//可口可乐
public  class Coke implements Drinks{
    @Override
    public String getName() {

        return "可口可乐";
    }

    @Override
    public void price() {
        System.out.println("3元/瓶");
    }

    @Override
    public void number() {
        System.out.println("还有66瓶"+"\n");
    }
}


Maidong.java//脉动
public class Maidong implements Drinks{
    @Override
    public String getName() {

        return "脉动";
    }

    @Override
    public void price() {
        System.out.println("5元/瓶");
    }

    @Override
    public void number() {
        System.out.println("还有88瓶"+"\n");
    }
}

Example_5.java//测试类
public class Example_5 {
    public static void main(String[] args) {
        Bill bill=new Bill();
        bill.getBill(new Coke());
        bill.getBill(new NFSQ());
        bill.getBill(new Maidong());

    }
}

运行结果:

在这里插入图片描述

总结:

以上就是今天要讲的内容,简单地概述了面向接口编程的概念,接口与实现基础也到此结束。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值