抽象类与接口的相同点
- 从java8开始都有默认方法,
- 继承抽象类或者实现接口都必须要实现它的全部方法,除非子类或者实现类也是抽象的或者也是接
抽象类与接口的不同点
- 修饰关键字的不同,接口只能用public,抽象类都可以
- 多继承,接口可以多继承,接口不能
- 实现方法不同,抽象类是通过继承extends,接口是通过实现implements
- 接口不能有main方法,抽象类可以有main方法
- 接口没有构造方法,抽象类有构造方法,可以初始化一些属性
- 速度,接口速度比较慢,抽象类的速度比较快
抽象类与接口的使用
1.如果基本功能要不断的更新,则选用抽象类,只需要更改抽象类,它的子实现类都不需要变更,如果使用接口的话,它的实现类都需要更改
2.多继承,如果需要多继承的话,只能使用接口,因为接口可以实现多个接口
3.如果有一些方法需要默认实现的话必须要使用抽象类,因为接口中的方法都是抽象的,但是java8中引入了新特性可以添加default method
JAVA8中的新特性,在接口中增加类默认方法,缩小了与抽象类的不同 package abstractClass; public interface A { default String print(String name,String n) { return "A"+name; } } public interface B { default String print(String name)//如果用多继承的话,连个父接口不能让默认方法名与参数都相同 { return "B"+name; } } public interface C extends A,B { } public class D implements C { } public class E { public static void main(String[] args) { D d = new D(); System.out.println(d.print("接口A", "A")); System.out.println(d.print("接口B")); } } console: B接口A A接口B
总结
抽象类
与普通的Java类没有太大的区别,区别是不能直接实例
接口
与普通的Java完全是不同的类型

浙公网安备 33010602011771号