Java 接口(9)

接口和内部类为咱们提供了一种将接口与实现分离的更加结构化的方法。程序员

1.抽象类和抽象方法

  • 抽象类,是普通的类与接口之间的一种中庸之道.
  • 抽象方法:仅有声明而没有方法体.
  • 抽象类:包含抽象方法的类.若是一个类包含一个或多个抽象方法,该类必须被限定为抽象的.
  • 若是从一个抽象类继承,并想建立该新类的对象,那么久必须为基类中的全部抽象方法提供方法定义。若是不这样作,那么导出类便也是抽象的,且编译器将会强制用abstract关键字来限定这个类.
  • 建立没有任何抽象方法的抽象类:阻止产生这个类的任何对象.

2.接口

  • interface关键字产生一个彻底抽象的类,它没有提供任何具体实现.它容许建立者肯定方法名、参数列表和返回类型,可是没有任何方法体(接口之提供;额形式,二尾提供任何具体实现).
  • 一个接口表示:全部实现了该特定接口的类看起来都像这样(接口被用来创建类与类之间的协议).
  • 接口能够包含域,可是这些域隐式地是static和final的.
  • 要让一个类遵循某个特定接口(或者是一组接口),须要使用implements关键字.
  • 在接口中,方法默认是public的.当要实现一个接口时,接口中被定义的方法必须被定义为是public的.

3.彻底解耦

  • 建立一个可以根据所传递的参数对象的不一样而具备不一样行为的方法,被称为策略设计模式.
  • 适配器设计模式:适配器中的代码将接受你所拥有的接口,并产生你所须要的接口.
  • 将接口从具体的实现中解耦使得接口能够应用于多种不一样的具体实现,所以代码也就更具可复用性.

4.Java中的多重继承

  • 使用接口的核心缘由:为了可以向上转型为多个基类型(以及由此带来的灵活性).
  • 第二个缘由:防止客户端程序员建立该类的对象,并确保这仅仅是创建一个接口.
  • 若是要建立不带任何方法定义和成员变量的基类,那么就应该选择接口而不是抽象类.事实上,若是知道某事物应该成为一个基类,那么第一选择应该是使它成为一个接口.

5.经过继承来扩展接口

  • 经过继承,能够很容易地在接口中添加新的方法声明,还能够经过继承在新接口中组合数个接口,这两种状况均可以得到新的接口.
  • 通常状况下,只能够将extends用于单一类,可是能够引用多个基类接口,只需用逗号将接口名一一隔开便可.
  • 在打算组合的不一样接口中使用相同的方法名一般会形成代码可读性的混乱,请尽可能避免这种状况.

6.适配接口

  • 接口容许同一个接口具备多个不一样的具体实现.在简单的状况中,他的体现形式一般是一个接受接口类型的方法,而该接口的实现和向该方法传递的对象则取决于方法的使用者.

7.接口中的域

  • 在Java SE5以前,在的接口中定义域(static&final)是产生于enum具备相同效果的类型的惟一途径.
  • 在接口中定义的域不能是"空final",可是能够被很是量表达式初始化.
  • 域不是接口的一部分,它们的值被存储在该接口的静态存储区域内.

8.嵌套接口

  • 接口能够嵌套类或其余接口中.
  • 嵌套在另外一个接口中的接口自动就是public的,而不能声明为private的.
  • 当实现某个接口时,并不须要实现嵌套在其内部的任何接口.
  • private接口不能再定义它的类以外被实现.

9.接口与工厂

  • 接口是实现多重继承的途径,而生成遵循某个接口的对象的典型方式就是工厂方法设计模式.
  • 与直接调用构造器不一样,在工厂对象上调用的是建立方法,而该工厂对象将生成接口的某个实现的对象.
  • 理论上,经过这种方式,咱们的代码将彻底与接口的实现分离,这就使得咱们能够透明地将某个实现替换为另外一个实现.

END设计模式

相关文章
相关标签/搜索