美文网首页
第九章:接口

第九章:接口

作者: MAXPUP | 来源:发表于2017-11-29 22:58 被阅读0次

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

1. 抽象类

包含抽象方法的类叫作抽象类。使用抽象类创建对象会报错。继承抽象类必须为基类中所有抽象方法提供方法定义,若不,则导出类也是抽象类。也可以创建没有抽象方法的抽象类,只是不能实例化。

abstract class Instrument{
  public String what() {return "Instrument";}
  public abstract void adjust();
}

2. 接口

接口提供了形式,而未提供任何具体实现。接口被用来建立类与类之间的协议。
接口中被定义的方法必须被定义为public(默认也为public)。接口也可以包含域,但域隐式地是static和final的。
**策略模式:创建一个能够根据所传递的参数对象的不同而具有不同行为的方法。
**适配器模式:接受你所拥有的接口,并产生你所需要的接口。
通过继承可以扩展接口,组合不同的接口中使用相同的方法名会造成代码可读性的混乱。
嵌套接口:值得注意的是,嵌套接口为private时,即时用public方法可以返回值,但不可直接使用,除非将返回值交给有权使用它的对象。

class A{
  private interface D{
    void f();
  }
  public class DImp implements D{
    public void f(){}
  }
  public D getD(){ return new DImp(); }
  public void receiveD(D d){
    d.f();
  }
}
class exp{
   public static void main(String[] args){
    A a = new A();
    //Cannot access A.D
    //!  A.D ad = a.getD();
    //Doesnt return anything but A.D
    //! A.DImp di = a.getD();
    //Cannot access a member of the interface
    //! a.getD().f();
    //Only another A can do anything with getD();
    A a2 = new A();
    a2.receiveD(a.getD());
  }
}

**接口与工厂方法:接口与工厂方法结合可以完全将代码与接口分离。对于创建类,几乎在任何时刻,都可以替代为创建一个接口和一个工厂。

interface Game{ boolean move();}
interface GameFactory{ Game getGame(); }

class Checkers implements Game{
  .....
}
class CheckersFactory implements GameFactory{
  public Game getGame() { return new Checkers() }
}

class Chess implements Game{
  ...
}
class ChessFactory implements GameFactory{
  public Game getGame() { return new Chess() }
}
public class Games {
  public static void palyGame(GameFactory factory){
    Game s = factory.getGame();
    ...
  }
  public static void main(String[] args){
    playGame( new ChessFactory);
    playGame( new CheckersFactory);
  }
}

总结:
任何抽象化都应该是真正应需求而产生,必需时,应该重构接口,恰当的原则应该是优先选择类而不是接口。从类开始,如果接口的必需性变得非常明确,就进行重构。

相关文章

  • 数据结构思维 第九章 `Map`接口

    第九章 Map接口 原文:Chapter 9 The Map interface 译者:飞龙 协议:CC BY-...

  • 第九章:接口

    接口和内部类为我们提供了一种将接口和实现分离的更加结构化的方法。 1. 抽象类 包含抽象方法的类叫作抽象类。使用抽...

  • 第九章 接口

    9.1抽象类和抽象接口 创建抽象类是希望通过这个通用类操纵一系列类,所以如果直接创建一个抽象类是没有意义的.甚至还...

  • Thinking in Java 第九章接口读书笔记

    1.第九章一上来就说了接口的作用:接口与内部类为我们提供一种将接口与实现分离的更加结构化的方法。所以这一句的重点我...

  • Java多线程笔记

    第九章-线程笔记: 1.线程的创建有两种方式:(1)继承Thread类;(2)重写Runnerbale接口(必须重...

  • 2017-09-10学习记录

    今天重新学习了接口和内部类的部分知识;下面是所有的内容: 第九章:接口 在第八章多态中,通过把子类对象的基类引用作...

  • 《JavaScript高级程序设计》之笔记七

    第九章 DOM DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序编程接口)。DOM描绘了一个...

  • Think in Java 第九章(接口)

    接口和内部类为我们提供了一种将接口与现实分离的更加结构化的方法。 9.1抽象类和抽象方法 创建抽象类是希望通过接口...

  • 第九章 DMA控制接口

    9.1 DMA控制器8237A 每个8237A芯片有四个独立的DMA通道,每个通道具有不同的优先权,每个通道有4种...

  • Java编程思想——第九章:接口

    接口和内部类为我们提供一种将接口与实现分离的更加结构化的方法。抽象类似普通类和接口之间的一种中庸之道。 1.抽象类...

网友评论

      本文标题:第九章:接口

      本文链接:https://www.haomeiwen.com/subject/rfmpbxtx.html