接口

抽象类和抽象方法

它们可以让类的抽象性更加明确起来,告诉我们和编译器将怎样使用它们——表示这个方法或者抽象类是可扩展的,可能会有很多类共有的,特殊的类需要去具体实现里面的抽象方法。当然抽象类里面也可以有除了抽象方法以外还可以有具体的实现方法,而接口里面就只能有声明的抽象方法。
抽象类和抽象方法体现了JAVA重构的思想,让我们用户可以将公共方法沿着继承层次向上移动。

接口

接口就是将类关键字class用interface代替,接口的权限默认为包访问权限,一般就是给接口加入public权限,其中接口里面的方法全是抽象的,默认权限是public,同时接口里面是可以定义域的,只不过这些域是隐式地stati和final。
接口的含义就是:所有实现了该特定接口的类都是差不多的,看起来都有像这样,因为实现这些接口的类必须实现接口里面的抽象方法或者继续保持抽象。而对于实现这些接口的类来说,这个接口只是我的一个大致外貌,其具体的内容还是由我自己来决定,并且我还可以加入你接口没有的方法,编译器照样不能拿我怎么样。

接口实现完全解耦

对于一个操作类的方法,如果这个方法接受某一个基类的参数,这种情况下,在多态的特性下你所传入进去的类只能是这个基类的或者其子类,然而这种方法只要你传入的不是这个类或者其子类,那么就会出错。但是,如果这个方法接受的是一个类,而这个类里面只要有与之前传入的的基类相同的一些基本方法就能照样执行该方法了。因此我们完全可以将这些通用方法提取出来,写在一个接口里面,让那些类似导出类去分别实现这个接口以及还有自己另外方法,这样就可以让这个方法完全解耦了,不必依赖最初的这个基类的。
//对于接口的完全解耦,这两种设计模式体现得淋漓尽致:策略模式和适配器模式。(不准确)

策略模式

策略模式:一个方法里面跟句传入参数对象的不同而拥有不同的行为,其中,这个方法内部又有着大致相同的算法结构,这种设计方法的模式叫做策略设计模式。其中,这个变化的参数对象就叫策略,策略里面的某些方法就决定自己设计的这个方法的结果的差异性。
比如:我们对乐器类的二胡、钢琴、小提琴都有一个发音的方法,我们自己想设计出一个类,根据传入的乐器类对象的不同而进行不同的演奏方法,因此在这个演奏的方法里面,我们需要将这个乐器的发音作为算法的一部分,而不同的乐器所对应的发音是不同,就决定了这个演奏的效果是不同的。

接口与工厂

在工厂设计模式中,很好的反应了接口的解耦合能力。
什么是工厂模式?我们让一个工厂负责帮我们给我们所需要的具体类,我们不用管这些具体类是如何创建的,只管用就行。
比如,我们有一个车的建造工厂,我们的车都有发动、刹车、前进,对于不同的车这几个方法是不同的,那么我们就将这几个方法抽象为一个接口,然后对于具体的车(具体类)让他去实现这个接口,这些具体的车(具体类)实现具体细节工厂不用去管,分工厂就负责生产自己对应的具体类,总的工厂只负责让分工厂生产出客户所需的车(具体类)就行,因此在总工厂中的方法中传入一个分工厂,那么总工厂就能得到对应的车(具体类),而这个车有区别于其他车的行为。

接口的使用原因

  1. 能够将对象向上转型为多个不同的基类,让程序更加灵活,而不是只有继承了那一种基类,一个具体内容只能继承一个类但是可以实现多个接口
  2. 防止客户端创立一个该类的对象,保证这仅仅就是一个类似模板的东西,而不是继承那种去覆盖基类的方法。需要的是去去实现接口中的方法。

嵌套接口

接口与接口之间是可以嵌套使用的,但是强制要求所有的接口都是public(默认),不能声明为private,另外,实现某个接口的时候,不需要实现其里面的内部接口,并且private接口不能被定为在它的类之外实现。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值