当前位置: 代码迷 >> Java相关 >> 类继承与接口继承的区别?解决思路
  详细解决方案

类继承与接口继承的区别?解决思路

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

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