why
在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地
方,又有太多不同的地方。
案例
飞机和鸟是不同类的事物,但是它们都有一个共性,就是都会飞。那么在设计的时候,可以将
飞机设计为一个类Airplane,将鸟设计为一个类Bird,但是不能将 飞行 这个特性也设计为类,
因此它只是一个行为特性,并不是对一类事物的抽象描述。
类描述对象的属性和方法。接口则包含类必须要实现的方法,是对行为的抽象所以通常我们说
接口是一种约束。
接口,英文称作interface,在软件工程中,接口泛指供别人调用的方法或者函数。
接口的定义
接口(Interface)接口可以看成是特殊的抽象类,只包含抽象方法的抽象类。接口并不是类,
编写接口的方式和类很相似,但是属于不同的概念,类描述对象的属性和行为,接口则包含类
要实现的方法。
本例要求实现银行卡系统的银联接口,详细要求如下:
银联接口,用于描述银联统一制定的规则,该接口提供检测密码方法、取钱方法以及查询余额方法。
工商银行接口,用于描述工商银行发行的卡片功能,在满足银联接口的规则基础上,增加了在线支付功能。
农业银行接口,用于描述中国农业银行发行的卡片功能,在满足银联接口的规则基础上,增加了支付电话费的功能。另外,农行的卡的卡内余额,允许最多透支2000。
实现工商银行接口和农业银行接口,并进行测试。
一、定义一个接口
接口通过interface关键字来定义接口
修饰符 interface 接口名称
案列:
定义名为Unionpay的银联接口,用于描述银联统一制定的规则:然后在该接口中定义
getBalance方法来获取余额功能,定义getgetMoney表示取钱功能,定义checkPwd来检查密
码功能
二、接口的继承
一个接口能继承另一个接口,和类之间的继承方法比较相似,接口的继承使用extends关键
字,子接口父接口中的方法
案列
定义名为ICBC的工商银行接口,用于描述中国工商银行发行的卡片功能,该接口实现需要满
足银联接口的功能,因此继承银联接口,而且该接口在具备银联接口的功能基础上,要求增加
在线支付功能,所以在接口中定义payOnLine方法
定义名为ABC的农商银行接口,用于描述农商银行发行的卡片功能,该接口实现需要满足银联
接口的功能,因此也继承银联接口,而且在具备银联接口的功能基础上,要求增加支付电话费
功能,所以在接口中定义PayTelTelBill方法
三、实现接口
接口是抽象的,没有具体的实现,需要由类来实现,接口的实现用implements关键字来实现
放在class关键字的后面,一个类实现了某接口后,必须实现接口中的抽象方法,否则这个类
必须声明为抽象类。
语法:
class 类名 implements 接口名,接口名{}
案列:
定义名为ICBCImpl的类,该类实现ICBC接口:另外,分析问题中的取钱功能,需要对余额信息进行存储,插入卡片以后需要输入密码后才能进行取钱,因此,在ICBCImpl类中定义double类型属性money表示账户余额以及String类型属性pwd表示卡片的密码
实现农业银行接口的过程和实现工行接口的过程类似,实现的过程中注意,农行卡内余额可以透支2000.
四、接口和类的区别
相同点
不同点
接口不能实例化对象
接口没有构造方法
接口中的所有的方法都必须是抽象方法
接口中不能放置实例变量,但是可以放置静态常量
接口可以继承接口,但是需要被类实现
接口支持多继承
五、抽象类和接口的区别
抽象类中可以有方法体,接口中不行
抽象类中的成员变量可以是各种类型,但是接口中不行,只能是静态常量
抽象类中可以有静态代码块和静态方法,但是接口不能有静态代码块和静态方法
一个类只能继承一个抽象类,但是一个类可以实现多个接口
接口代码应用案例
欢迎👏点赞+关注,笔芯❤️

标签: