第9章 接口

来源:互联网 发布:淘宝老式电影幕布 编辑:程序博客网 时间:2024/06/10 08:48

9.1 抽象类和抽象方法

    仅有声明而没有方法体,强制要继承的下游类去具体实现该方法,则在该方法返回值前加abstract,以表明它是抽象方法。

    拥有一个以上抽象方法的类必然是抽象类(也可以一个都没有,只在类名class前指定)

    抽象类一定不可以用于创建对象,但可以用于创建引用(数组也是引用!!!),

    用abstract基类引用指向子类对象后,再调用子类的方法,就不需要使用向下转型!否则必须进行向下转型(即向子类进行强制转换)。

9.2 接口

    一个所有方法都是抽象方法的类,即接口。用于建立类之间的协议。

    接口也可以包含域,这些域隐含是static,final。方法自动是public,abstract

9.3 完全解耦(???)

   1)创建一个能够根据所传递的参数对象的不同而具有不同行为的方法,即策略设计模式 。传递进去的参数对象就是策略,“策略”包含变化部分。

   2)适配器设计模式,适配器中的代码将接受你所拥有的接口,并产生你所需要的接口

9.4 Java中的多重继承

    在导出类中,不强制要求必须有一个是抽象的或具体的基类,但只能从一个非接口类继承(放在最前面),可以从多个接口实现。

     可以使用从非接口类继承而来的方法去满足对继承其他接口,必须要实现方法的要求。

     使用接口的核心原因:为了能够向上转型为多个基类型。第二个原因是:防止客户端程序员创建该类的对象。

9.5 通过继承来扩展接口

    在使用接口继承接口时,extends可以引用多个基类接口。

  9.5.1 组合接口时的名字从突

    在打算组合的不同接口中使用相同的方法名会出错。

9.6 适配接口

    通过采用适配接口,从而在任何现有类之上添加新的接口,这就意味着让方法接受接口类型,是一种让任何类都可以对该方法进行适配的方式。

9.7 接口中的域

    放入接口中的任何域都自动是public,static和final的,所以接口就成为一种很便捷的用来创建常量组的工具。(现已不常用)

  9.7.1 初始化接口中的域

    在接口中定义的域不能是“空final”,但是可以被非常量表达式初始化。由于是static的,所以在类第一次被加载时就初始化,值存储在该接口的静态存储区域中。

9.8 嵌套接口(用的少)

    接口可以嵌套在类或其他接口中。

9.9 接口与工厂

    生成遵循某个接口的对象的典型方法时:工厂方法。在工厂对象上调用的是创建方法,而该工厂对象生产接口的某个实现的对象。从而可以创建框架

9.10 总结 

    正确的原则还是:优先选择创建类,而不是接口。从类开始,如果接口的必须性变得非常明确,那么就进行重构。