Java编程思想-5

#Java编程思想
接口
“接口和内部类为我们提供了一种将接口与实现相分离的更加结构化的方法。”书中的这句话就说明了一点:分离。接口与实现的分离。也就是在接口中定义一些模板方法,再根据具体的情况进行具体实现。所以关键字:分离。
##1、抽象类和抽象方法
抽象类?被限定词abstract限定的类,内部包含抽象方法。作用:为所有导出类(子类)提供统一的功能方法,它也是可以实现设计与实现的分离,但是java中的单继承使得抽象类没有接口灵活。
抽象方法?被abstract限定的方法,没有方法体。作用:作为功能性接口出现,让继承该类的子类都要实现该方法。
抽象类也是一个很好的重构工具,可以很容易的将公共方法沿着继承关系向上转型。
##2、接口
接口?是一个完全抽象的抽象类,内部没有任何方法的实现。其内部的所有的属性是属于static和final的常量,所有的方法都默认为public的。
##3、完全解耦
将接口从具体的实现中解耦,使得接口可以应用到不同的具体实现,因此代码就更具有可复用性。就是说将接口独立起来,对于不同的实现过程都可以使用该接口,以及调用该接口的处理方法可以处理实现该接口的类。所谓的解耦,就是从具体实现中抽象出接口。若要解耦,那就创建接口吧。
##4、java中的多继承
接口,不仅是一个纯粹的抽象类,它还可以实现多个接口的组合(这是接口的一大特色)。一个类中可以实现多个接口,而这个类可以很容易的向上转型为不同的接口对象。因此这里的多继承的关键点:类实现多个接口,类向上转型。

##5、接口之间的继承
接口之间的组合可以实现多重继承。

Interface A extends B,C,D,E{。。。。}

B,C,D,E均是接口。
注意:对于接口继承中,方法名相同的,返回类型不同的方法声明会带来冲突,因此要注意避免。
##6、适配接口
一个接口可以允许具有不同的实现。那么就要一种只接受接口参数的方法,这样的话就可以传递不同的接口实现到该方法中。策略模式就是这样做的。
策略模式:一个接口A,一个B的类方法只接受A接口的参数,不同的接口的实现都可以作为B类的方法的参数。
如:Scanner类的构造方法以Readable接口作为参数,只要实现Readable接口的类都可以作为Scanner的参数。
只要实现Iterable接口的类,都可以使用foreach进行遍历。
##7、接口中的域(属性)
接口中的属性都是static & final类型的常量。常量多使用大写字母的单词表示。接口中的属性必须都要用初始值,但可以是使用表达式来初始化。如

Interface A{
Int count = new Random(12).nextInt(10);
}

##8、嵌套接口
类中嵌套接口,这可以用来实现观察者模式。当然接口中也可以嵌套接口,但实现外层接口时,不必实现内层接口。
##9、接口与工厂
工厂模式的设计方法,是在工厂对象上调用的是创建方法,该工厂对象将生成接口类的某个实现的对象。如:

Interface A{}
Interface AFactory{
A getA();
}

实现AFactory接口的类对象返回实现A接口的类对象。

总结:
接口?纯粹的抽象类,多继承解决方案的实现者。在多种设计模式中都会看到接口的存在。它的另外一个名字,我觉得应该叫:分离。接口和实现的分离。正因为与具体实现的分离才使得它那么抽象、那么任性的多继承。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欧阳小伙

您的打赏是我创作的:最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值