日期:2014-05-20  浏览次数:20811 次

类继承与接口继承的区别?
刚刚读《设计模式 可复用面向对象软件基础》,里面的解释是这样的:
“类继承根据一个对象的实现定义了另一个对象的实现。简而言之,它是代码和表示的共享机制。然而,接口继承描述了一个对象什么时候能够代替另一个对象。”
上面一段话对类继承还有些理解,但是对接口的继承就不知所云了,那位大侠能解释一下先!

------解决方案--------------------
如果你的接口有三个实现类,而三个实现类实现接口的某个方法的逻辑各不相同,利用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();
}