1、接口与抽象类的概念
抽象类:
- 抽象类是一个特殊得类,具备类的特性,只是不能实例化对象,天生就是要被继承。它与普通方法的区别就是抽象类可以包含抽象方法,普通类不行。若一个抽象类被子类继承,则子类需要实现父类中的抽象方法,否则子类也需要被定义为抽象类。抽象类可以包含属性、方法、构造方法,但是不能用于实例化,主要用途是被子类所调用
- 若一个类中含有抽象方法,这个类必定是抽象类,但是抽象类中不一定含有抽象方法,也可以有普通方法(被子类所调用)
接口:
- 在JDK1.8之前,接口中可以含有变量和方法。但是要注意,接口中的变量会默认被为public static final修饰(并且只能是public static final变量),而方法方法同样默认为public abstract修饰,且只能是public abstract方法),并且接口中所有的方法不能有具体的实现,及接口中的方法都是抽象方法
- 而在JDK1.8之后接口也可以包含非抽象方法了,但是要用 default修饰的方法)
2、接口与抽象类的区别
- java中的接口与抽象类分别被interface与abastract关键字定义
- 接口要被类实现,而抽象类是要被子类继承
- 接口可以多继承接口,但抽象类只等被单继承
- 抽象类:除了不能实例化抽象类之外,它和普通Java类没有任何区别
- 抽象类抽象方法可以有public、protected和default这些修饰符,而接只能是public
- 抽象类可以有成员变量,而接口只能声明常量