码迷,mamicode.com
首页 > 其他好文 > 详细

接口和抽象类的区别联系(二)

时间:2016-08-05 19:41:37      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

需求一:普通门

版本1.0

abstract class Door {
    public abstract void open();
    public abstract void close();
}
class NormalDoor extends Door {
    @Override
    public void open() {}
    @Override
    public void close() {}
}

版本2.0

abstract interface Door {
    public abstract void open();
    public abstract void close();
}

class NormalDoor implements Door {
    public void open() {}
    public void close() {}
}

需求二:报警门

版本1.0

abstract class Door {
    public abstract void open();
    public abstract void close();
    public abstract void alarm();
}

class NormalDoor extends Door {
    @Override
    public void open() {}
    @Override
    public void close() {}
    @Override
    public void alarm() {}
}

版本2.0

abstract interface Door {
    public abstract void open();
    public abstract void close();
    public abstract void alarm();
}

class NormalDoor implements Door {
    public void open() {}
    public void close() {}
    public void alarm() {}
}

版本3.0

abstract class Door {
    public abstract void open();
    public abstract void close();
}

abstract interface Alarm{
    public abstract void alarm();
}

class NormalDoor extends Door implements Alarm {
    @Override
    public void open() {}
    @Override
    public void close() {}
    public void alarm() {}
}

 

点评:

普通门中,版本1.0 如果添加一个非抽象方法,则子类自动具有,不需要改代码(优势)

报警门中,版本1.0 所有子类,都要实现报警,但好多门是不需要报警的(劣势)

报警们中,版本2.0 因为接口添加了一个报警功能,使得所有用到该接口的都得改代码,不然编译不通过。(劣势)

报警们中,版本3.0 合适得处理方式

 

接口是对行为的抽象,普通门2.0 和 报警门2.0 都不合适。

抽象类是对对象的抽象,所以普通门1.0 合适。

接口和抽象类的区别联系(二)

标签:

原文地址:http://www.cnblogs.com/zno2/p/4571523.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!