java之路

JavaSE梳理八:接口

2019-11-14  本文已影响0人  今天比昨天努力

    接口和内部类提供将接口和实现分离的更加结构化的方法。

    建立通用接口的唯一理由:不同的子类可以用不同的方法表示此接口。

    接口拥有:public和“包访问”两种可视性,适用于嵌套接口,非嵌套接口。新添加:private

抽象基类简称抽象类

    抽象方法机制:仅有声明没有方法体,abstract void f();包含抽象方法的类叫抽象类。如果一个类包含一个或多个抽象方法这个类就是抽象类。但是抽象类不一定就必须有抽象方法。

    抽象类是不完整的所以不能创建对象,不然编译器会报错。如果继承抽象类,那么就必须为基类中的所有抽象方法提供方法定义,否则导出类也是抽象类,并且编译器会强制我们用abstract关键字限定导出类。

    抽象类和抽象方法用处:使类的抽象性明确,并告知程序员和编译器如何使用。抽象类还是个重构工具,很容易的将公共方法沿着继承层次结构向上移动。

接口

    interface关键字使得类更加抽象。

    抽象和接口:

    abstract允许在类中创建一个或多个没有任何定义的方法-提供接口部分,但是没有提供任何具体实现。实现由继承者创建。

    interface产生一个完全抽象的类,没有提供具体实现,只允许创建者确定方法名,参数列表和返回类型,没有任何方法体。极度抽象的类允许通过创建一个能够向上转型为多种基类的类型,可以实现多重继承。接口中的域隐式的static和final的。

implements:让类遵循某个或一组接口。表示:interface知识外貌,但是implements声明如何工作。如果实现了接口的类九百昵称了普通类,可以扩展它。

完全解耦

策略设计模式:创建一个能够根据所传递的参数对象的不同而具有不同行为的方法。“策略”包含变化的部分,方法包含所要执行的算法中固定不变的部分。

适配器设计模式:接受所拥有的接口,产生所需要的接口。

    将接口从具体实现中解耦使得接口可以应用于多种不同的具体实现,代码会更可复用。

多重继承

概念:组合多个类的接口的行为。

    将所有的接口名都置于implements关键字之后 。当组合了具体类和接口时需要将具体类放在前面,后面跟着接口,否则编译器会报错。

    使用接口的核心原因:向上转型为多个基类型,由此带来灵活性。第二个原因:与使用抽象基类相同,防止客户端程序员创建该类的对象。

继承

通过继承可一在接口中添加的方法声明

,也可以在新接口中组合多个接口。在组合不同接口中使用相同的方法名通常会造成代码可读性的混乱。相同的方法也就是返回值,方法名,参数是相同 不会有什么问题。但是如果签名或者返回类型不同就会出现报错,编译器就会提示编译不通过。

    接口中的域默认都是public,在SE5之后,enum关键字完全可以替代接口中的域。域并不属于接口,他的值被存储在接口的静态存储区域内。

嵌套接口

接口可以嵌套在类或者其他接口中。private嵌套接口:实现private接口只是一种方式,它强制该接口中的方法不能添加任何类型信息,不允许向上转型。当实现某个接口时,并不需要实现嵌套再其内部的任何接口,private接口不能再定义它的类之外被实现。

接口与工厂

工厂方法设计模式:生成遵循某个接口的对象的典型方式。不是直接调用构造器,而是创建方法,该工厂对象将生成接口的某个实现的对象,通过这种方式,接口和接口的实现分离,可以让某个实现替换为另一个实现。

总结:恰当的优先选择类而不是接口,从类开始如果接口的必须行非常明确那么就需要重构。

上一篇 下一篇

猜你喜欢

热点阅读