抽象类概念:如果一个类没有足够的信息来描述一个具体的对象,需要其它类来支持,这样的类称为抽象类。
接口概念:是一种比抽象类还抽象的“类”
相同点:
1、都不能直接实例化,必须通过子类或实现类来实例化
2、子类或实现类必须要重写父类所有抽象方法,否则要声明为抽象类
不同点:
1、(继承)接口支持多继承,抽象类支持单继承
2、(关键字)接口用interface关键字修饰,抽象类用abstract class关键字修饰
3、(成员变量)接口中只能是public static final修饰的公共的静态的常量;而抽象类可以是常量,也可以是变量
4、(成员方法)接口中必须是抽象方法(JDK 8之后加上了非抽象方法的默认实现和静态方法;JDK 9 接口加上了私有方法和私有静态方法);抽象类成员方法既可以是普通方法,也可以是抽象方法。
5、(构造方法)接口不能有构造方法;抽象类可以有构造方法,但必须在子类继承后调用,才会初始化父类
6、(main方法)只有抽象类有main方法