9 回答
TA贡献1804条经验 获得超2个赞
TA贡献1779条经验 获得超6个赞
接口表示一个能力/行为。例如:人会跑,狗也会跑,就可以定义接口IRunable。 使用接口很好实现组件间解耦。
抽象类就是为了实现多态,使代码更方便扩展。
TA贡献1817条经验 获得超6个赞
接口的话更偏向于为一群类定一个协议, 而抽象类的话已经向实现迈进了一步。
例如模板方法模式中就用到了抽象类,实现了一些通用的方法, 而将不同的方法延迟到子类再实现。
TA贡献1844条经验 获得超8个赞
举个简单的例子,你现在想要抽象所有国家的人,那么你会想到抽象成一个接口,然后有个方法叫sayHello:
public interface Human{
String sayHello();
}
OK,现在每个实现了这个接口的对象只要实现sayHello方法,就表示了各个国家的人,他们拥有了不同的打招呼的的方式。
但是现在业务复杂起来了,你需要这些人还具备一些通用的能力,比如cry,walk,那么这个时候,你是不是应该考虑把Human抽象成为一个抽象类,像这样:
public abstract class Human{
public abstract String sayHello();
public String cry(){
System.out.println("wu~wu~wu~wu~wu~");
}
public String walk(){
System.out.println("左右左 左右左");
}
}
总结一下,就是如果只有抽象的方法,那么就用接口,如果还有通用的具体方法实现,则用抽象类
TA贡献1811条经验 获得超4个赞
参考:
The Java™ Tutorials :: Learngin The Java Language :: Interfaces and Inheritances :: Inheritances :: Abstract Methods and Classes :: Abstract Classes Compared to Interfaces
添加回答
举报