抽象类
包含抽象方法的类,而且编译器会强制我们使用abstract关键字限制抽象类
另外,我们还可以创建一个没有任何抽象方法的抽象类,以此来阻止创建该类的对象
interface关键字产生的是一个完全冲抽象的类,即所有的方法都是抽象方法,而abstract关键字可以产生部分抽象方法
继承interface接口的类的必须实现接口中所有的方法
接口中的域是隐式的static和final的
关于完全解耦
如果我们将一些方法封装到一个策略类中,然后用类的继承方式重写这些策略方法。那么,我们在调用策略时只能传递策略类或者其子类的对象。但是当我们要传递类并没有继承该策略类时,就会遇到问题,这就是调用策略的方法和策略类耦合过紧的问题。因此,我们需要进行完全解耦,方法是:将策略类中方法以接口的形式提取出来,让我们要传递的类继承该策略接口。
关于适配器模式
如果无法修改你要使用的类,比如,我们要向调用策略的方法出传递一个类,但是该类无法被我们修改。此时,我们可以创建一个适配器,然后向方法中传递一个适配器对象。该适配器对象接受你所拥有的接口,并产生你需要的接口
接口和抽象类的选择
如果要创建一个不带任何方法实现以及成员变量的基类,则选择接口
关于接口嵌套
如果一个接口中嵌套另一个接口,那么,在实现顶层接口时并不需要实现嵌套接口。另外,private接口不能再定义它的类之外实现。
接口与工厂
生成接口对象的一种典型方式就是工厂设计模式。在工厂中调用get方法获取接口实现类的对象,可以将获取的对象进行向上转型,然后调用接口中的方法实现多态。
网友评论