抽象类abstract class和接口interface的区别
区别一:
抽象类是一类事物的高度聚合。比如动物,猫、狗、猪、牛…等等都属于动物。所以动物类就是抽象类。
猫类,狗类,猪类…等等都可以继承动物类。
代码如下:
接口是定义行为规范,比如"吃",很多东西都可以叫,猫、人、老虎…等等都可以吃。所以就可以定义一个"吃"的接口。
代码如下:
区别二:
抽象类在定义类型方法的时候,可以给出方法的实现部分,也可以不给出;而对于接口来说,其中所定义的方法都不能给出实现部分。
抽象类定义方法:
接口定义方法:
区别三:
继承类对于两者所涉及方法的实现是不同的。继承类对于抽象类所定义的抽象方法,可以不用重写,也就是说,可以延用抽象类的方法;而对于接口类所定义的方法或者属性来说,在继承类中必须要给出相应的方法和属性实现。
public class Cat extends Animal{
@Override
public void eat() {
// TODO Auto-generated method stub
super.eat();
}
}
public class Cat extends Animal{
@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("....");
}
}
public class Cat implements Eat{
@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("吃东西");
}
}
区别四:
在抽象类中,新增一个方法的话,继承类中可以不用作任何处理;而对于接口来说,则需要修改继承类,提供新定义的方法。