《Java编程思想》笔记9.接口


点击进入个人博客

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

9.1抽象类和抽象方法

  • 抽象方法:这种方法是不完整的,仅有声明而没有方法。用abstract修饰的方法。
  • 抽象类:包含抽象方法的类叫作抽象类。若是一个类包含一个或多个抽象方法,该类必须被限定为抽象的。用abstract修饰的类。
  • 能够建立一个没有抽象方法的抽象类。
  • 建立抽象类和抽象方法很是有用,由于他们能够使累的抽象性明确起来,并告诉用户和编译器打算怎样来使用它们。抽象类仍是颇有用的重构工具,由于它们使得咱们能够很容易地将公共方法沿着继承层次结构向上移动。

9.2 接口

  • interface关键字产生类一个彻底抽象的类(接口),它根本没有任何具体实现。
  • 一个接口表示:全部实现了该特定接口的类看起来都像这样。
  • 接口用于创建类于类之间的协议。
  • 接口中的域:默认是publicstaticfinal的。
  • 接口中的方法只能是public的,并且默认就是public的。

9.3 彻底解耦

  1. 复用代码的第一种方式是客户端程序员遵循该接口来编写它们本身的类。

策略设计模式

更详细的请看设计模式!!!算法

  • 根据所传递的参数对象的不一样而具备不一样行为的方法。
  • 这类方法包含所要执行的算法中固定不变的部分,而“策略”包含变化的部分。
  • 策略就是传递进去的参数对象。
public class Test {
    static void process(Processor p) {
        p.process();
    }

    public static void main(String[] args) {
        Test.process(new Processor1());
        Test.process(new Processor2());
    }
}

interface Processor {
    void process();
}

class Processor1 implements Processor {
    public void process() {
        System.out.println("1");
    }
}

class Processor2 implements Processor {
    public void process() {
        System.out.println("2");
    }
}

适配器设计模式

  • 你常常会没法修改你想使用的类,由于通常你是使用第三方的类库。
  • 适配器模式把一个类的接口变换成客户端所期待的另外一种接口,从而使本来因接口不匹配而没法在一块儿工做的两个类可以在一块儿工做。

9.4 Java中的多重继承

  • Java最多只能继承一个类,可是能够实现多个接口
  • 一个类能够向上转型成任何一个接口。

使用接口的缘由:设计模式

  1. 为了可以向上转型成为多个基类类型。
  2. 与抽象类相同,防止客户端程序员建立该类对象。

抽象类OR接口:ide

  1. 若是要建立不带任何方法定义和成员变量的基类,那么就应该选择接口而不是抽象类。
  2. 事实上,若是知道某事物应该成为一个基类,那么第一选择应该是使它成为一个接口。

9.5 经过继承来扩展接口

  • 接口能够继承其余接口
  • 接口能够一次性继承多个其余接口

9.5.1 组合接口时的名字冲突

  • 彻底相同的方法不会有问题
interface I1 { void f();}
interface I2 { int f(int i);}
interface I3 { int f();}

class C {
    int f() {
        return 0;
    }
}
// 两个方法重载
class C2 implements I1, I2 {
    public void f() {

    }
    public int f(int i) {
        return 0;
    }
}
// 重载
class C3 extends C implements I2 {
    public int f(int i) {
        return 0;
    }
}
// 相同的方法没问题,同时重写两个方法
class C4 extends C implements I3 {
    public int f() {
        return 4;
    }
}
// 此时是有问题的
class C5 extends C implements I1 {
}

9.6 适配接口

接口最吸引人的缘由之一就是容许同一个接口具备多个不一样的具体实现。工具

9.7 接口中的域

  • 由于接口中的域是publicstaticfinal的,因此接口能够用来建立常量组(尽可能避免这么作!)。

9.7.1 初始化接口中的域

  1. 在接口中定义的域不能是空final,可是能够被很是量表达式初始化。
  2. static代码块不能出如今接口中

9.8 嵌套接口

  • 接口能够嵌套在类或其余接口中。
  • 类内部的接口能够有四种权限控制符。
  • 接口内部的接口能够只能是public的。
  • 当实现某个接口时,不须要实现嵌套在其内部的任何接口。

9.9 接口与工厂

  • 接口是实现多重继承的途径,而生成遵循某个接口的对象的典型方法就是工厂方法
  • 这与直接调用构造器不一样,咱们在工厂对象上调用的是建立方法,而该工厂对象将生成接口的某个实现的对象。

9.10 总结

优先使用类而不是接口!设计

相关文章
相关标签/搜索