前言
这个很经典。
正文
抽象类和接口的不同点
1.抽象类不一定有抽象方法
2.抽象类有构造方法;
3.抽象类可以有变量,但是接口一定的final修饰的常量;
4.抽象类可以有普通方法,接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;
5.抽象类是继承,接口是实现(接口可以模拟多继承);
6.抽象类可以用public,protected符修饰,接口默认的方法修饰符是public abstract,接口中默认的属性修饰符是public static final;
7.接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。例如,Struct就可以继承接口,而不能继承类。
相同点
都不能被实例化;
不同的使用场合
java不支持多继承,可以用接口模拟多继承,基本方法不断改变,需要使用抽象类,如果使用接口,那么就要改变所有实现了该接口的类(即继承和实现的区别)