刚刚读《设计模式 可复用面向对象软件基础》,里面的解释是这样的:
“类继承根据一个对象的实现定义了另一个对象的实现。简而言之,它是代码和表示的共享机制。然而,接口继承描述了一个对象什么时候能够代替另一个对象。”
上面一段话对类继承还有些理解,但是对接口的继承就不知所云了,那位大侠能解释一下先!
------解决方案--------------------------------------------------------
如果你的接口有三个实现类,而三个实现类实现接口的某个方法的逻辑各不相同,利用java的多态机制会非常简化代码编写,逻辑也会很清晰。
给你举个例子,假设有A B C三个类,都有一个move()方法,如果要求你实现一个 数组或者是集合,集合里面只能是A B C的一种,需要遍历集合然后 分别调用集合元素的move()方法 ,你想想怎么弄?
你只能具体instanceof A 这样挨个判定是那个具体类型,然后分别调用A.move() B.move() C.move()方法
而加入你定义了一个A B C 统一的接口 名称为MInterface ,接口的方法就是move() ,那么就可以用下面的代码很简单实现
- Java code
public class InterfaceDemo { public static void main(String[] args) { MInterface[] ary=new MInterface[5]; ary[0]=new A(); ary[1]=new B(); ary[2]=new C(); ary[3]=new B(); ary[4]=new A();//接口的具体实现类 for(MInterface m:ary){ m.move();//java的自动向下绑定会自动实现具体实现类的move()方法 } }}class A implements MInterface{ @Override public void move() { //To change body of implemented methods use File | Settings | File Templates. System.out.println("这一行代表A对接口方法的业务逻辑实现"); }}class B implements MInterface{ @Override public void move() { //To change body of implemented methods use File | Settings | File Templates. System.out.println("这一行代表B对接口方法的业务逻辑实现"); }}class C implements MInterface{ @Override public void move() { //To change body of implemented methods use File | Settings | File Templates. System.out.println("这一行代表C对接口方法的业务逻辑实现"); }}interface MInterface{ public void move();}