欢迎光临散文网 会员登陆 & 注册

150天打卡day17_详解接口的使用

2021-04-27 11:15 作者:关阿姨的Java日记  | 我要投稿

why

在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地

方,又有太多不同的地方。

 

案例

飞机和鸟是不同类的事物,但是它们都有一个共性,就是都会飞。那么在设计的时候,可以将

飞机设计为一个类Airplane,将鸟设计为一个类Bird,但是不能将 飞行 这个特性也设计为类,

因此它只是一个行为特性,并不是对一类事物的抽象描述。

类描述对象的属性和方法。接口则包含类必须要实现的方法,是对行为的抽象所以通常我们说

接口是一种约束。

接口,英文称作interface,在软件工程中,接口泛指供别人调用的方法或者函数。

接口的定义

接口(Interface)接口可以看成是特殊的抽象类,只包含抽象方法的抽象类。接口并不是类,

编写接口的方式和类很相似,但是属于不同的概念,类描述对象的属性和行为,接口则包含类

要实现的方法。

  • 接口的特性

    • 接口中的每一个方法都会被隐式的指定为公开的抽象方法

    • 接口中不能放实例变量,只能放置静态常量

    • 接口中的方法不能在接口中实现,只能在类中实现

  • 案例贯穿

本例要求实现银行卡系统的银联接口,详细要求如下:

  • 银联接口,用于描述银联统一制定的规则,该接口提供检测密码方法、取钱方法以及查询余额方法。

  • 工商银行接口,用于描述工商银行发行的卡片功能,在满足银联接口的规则基础上,增加了在线支付功能。

  • 农业银行接口,用于描述中国农业银行发行的卡片功能,在满足银联接口的规则基础上,增加了支付电话费的功能。另外,农行的卡的卡内余额,允许最多透支2000。

  • 实现工商银行接口和农业银行接口,并进行测试。

一、定义一个接口

接口通过interface关键字来定义接口

修饰符 interface 接口名称

案列:

  • 步骤一:定义银联接口

定义名为Unionpay的银联接口,用于描述银联统一制定的规则:然后在该接口中定义

getBalance方法来获取余额功能,定义getgetMoney表示取钱功能,定义checkPwd来检查密

码功能

  • 接口总结:

    • 接口是隐式抽象的,当声明一个接口的时候,不用使用abstract关键字

    • 接口中不可以定义成员变量,但可以定义常量

    • 接口中只可以定义抽象方法,但是可以省略abstract

    • 接口中的方法都是公有的

二、接口的继承

一个接口能继承另一个接口,和类之间的继承方法比较相似,接口的继承使用extends关键

字,子接口父接口中的方法

案列

  • 步骤二:定义工商银行接口

定义名为ICBC的工商银行接口,用于描述中国工商银行发行的卡片功能,该接口实现需要满

足银联接口的功能,因此继承银联接口,而且该接口在具备银联接口的功能基础上,要求增加

在线支付功能,所以在接口中定义payOnLine方法

  • 步骤三:定义农商银行接口

定义名为ABC的农商银行接口,用于描述农商银行发行的卡片功能,该接口实现需要满足银联

接口的功能,因此也继承银联接口,而且在具备银联接口的功能基础上,要求增加支付电话费

功能,所以在接口中定义PayTelTelBill方法

  • 接口的继承总结

    • 接口间存在继承关系

    • 一个接口可以通过extends关键字来继承另一个接口,子接口继承了父接口中定义的所有方法。

    • 接口可以多继承

三、实现接口

接口是抽象的,没有具体的实现,需要由类来实现,接口的实现用implements关键字来实现

放在class关键字的后面,一个类实现了某接口后,必须实现接口中的抽象方法,否则这个类

必须声明为抽象类。

语法:

class 类名 implements 接口名,接口名{}

案列:

  • 步骤四:实现工商银行接口

定义名为ICBCImpl的类,该类实现ICBC接口:另外,分析问题中的取钱功能,需要对余额信息进行存储,插入卡片以后需要输入密码后才能进行取钱,因此,在ICBCImpl类中定义double类型属性money表示账户余额以及String类型属性pwd表示卡片的密码


  

  • 步骤五:实现农商银行接口

实现农业银行接口的过程和实现工行接口的过程类似,实现的过程中注意,农行卡内余额可以透支2000.

  • 步骤六:测试


  • 接口的实现总结

    • 类在重写方法时要保持一致的方法名,和参数类型以及返回值

    • 如果实现接口的类是抽象类,那么就没必要实现该接口的方法

    • 一个类可以同时实现多个接口

    • 一个类只能继承一个类,但是能实现多个接口

    • 接口不能实例化

四、接口和类的区别

  • 相同点

    • 接口和类都可以有多个方法

    • 接口和类文件都保存在.java的文件中,字节码文件都是.class文件

  • 不同点

    • 接口不能实例化对象

    • 接口没有构造方法

    • 接口中的所有的方法都必须是抽象方法

    • 接口中不能放置实例变量,但是可以放置静态常量

    • 接口可以继承接口,但是需要被类实现

    • 接口支持多继承

五、抽象类和接口的区别

  • 抽象类中可以有方法体,接口中不行

  • 抽象类中的成员变量可以是各种类型,但是接口中不行,只能是静态常量

  • 抽象类中可以有静态代码块和静态方法,但是接口不能有静态代码块和静态方法

  • 一个类只能继承一个抽象类,但是一个类可以实现多个接口

 

接口代码应用案例

欢迎👏点赞+关注,笔芯❤️


150天打卡day17_详解接口的使用的评论 (共 条)

分享到微博请遵守国家法律