抽象类和接口的概念及区别:
目录
1.抽象类的定义
当所有的子类对父类的方法都进行了不同程度的重写,那么这个方法的方法体没有实际含义就可以把方法体去掉,再加上abstract关键字修饰方法将其变成抽象方法。
当一个类中出现了抽象方法,那么这个类就变成了抽象类;普通类继承抽象类则需要重写抽象方法,如果不想重写所有的抽象方法的话,就可以将普通类变成抽象类。
抽象类特点总结:
- 抽象类中不一定有抽象方法,但有抽象方法的类一定是抽象类。
- 抽象类中可以定义属性及普通方法。
- 抽象类中可以定义构造方法。
- 抽象类不可以创建(new)对象。
- 抽象方法可以重载。
- 抽象方法不能被private/static/final单独修饰,因为抽象方法要被重写。
- 抽象方法不能被final关键字修饰,因为最终类(被final关键字修饰的类)不能被继承。
- 抽闲类的目的就是为了延展类的继承结构。
2.接口的定义
当抽象类中的所有方法都是抽象方法时,则可以把抽象类变成接口来表示(用interface来修饰);接口本质不是一个类,类与接口之间通过implements产生“实现”的关联关系。
Java支持接口与接口之间的多继承关系,类与接口之间的多实现就是为了让实现类能具有更多丰富的功能。实现类需要重写接口里所有的抽象方法。
接口的特点总结:
- 接口本质不是类。
- 接口里的方法都是抽象方法。
- 接口不可以定义构造方法。
- 接口不可以创建对象。
- 接口里可以定义属性,并且接口里的属性默认被 public final static 共同修饰,接口里的抽象方法默认被 public abstract共同修饰。
- 接口的目的是让实现类注入更多的特性。
3.抽象类与接口的区别
- 接口不是类。
- 接口里只有抽象方法,而抽象类中还可以有构造方法以及普通方法。
- 类和接口支持多实现,接口和接口支持多继承。
- 接口里的属性和抽象方法都有默认修饰符。
- 抽象类是为了延展类的继承结构。