在语言层面上,抽象类和接口的区别是
抽象类使用extend去继承,而接口是使用implement去实现
一个类只能继承与一个抽象类,但是却可以实现多个接口
在使用层面上呢
举个栗子
public abstract class animal{
public void eat(){};
public void sleep();
}
public class dog extend animal{
}
public class bird extend animal{
}
动物都会吃饭睡觉,那么我们可以定义一个动物的抽象类,将所有动物都具有的能力加入这个抽象类中。
从中我们可以看到,抽象类是对一类事物的通用能力的抽象,将他们所具备的相同能力抽象出来,当我有一个具备吃饭睡觉能力的东西时,我可以让他继承我这个anima抽象类,来告诉大家在我看来他是个动物。
可以说抽象类,是对具有相同行为的事务的分类。
但是bird除了吃饭睡觉之外,他还会飞。这是他所具备的特殊的能力。
public interface fly{
void fly();
}
public class bird extend animal, implement fly{
@Override
public void fly() {
}
}
鸟即是动物,又会飞,那么我们可以让他实现飞翔接口,告诉大家,我是动物,且我会飞,为什么这个fly不直接写在bird里,而要以接口的形式实现呢。
用接口的话,别人可以在看到类的申明文件的情况下就知道他具备哪些能力。
总结
总的来讲,感觉抽象类,是对具有同一类能力的事物的能力的汇总,一定程度上复用代码,且对事物分类
接口的话,是对某个能力或者行为的定义。强调有没有这个能力。