抽象类与接口的相同点
  1. 从java8开始都有默认方法,
  2. 继承抽象类或者实现接口都必须要实现它的全部方法,除非子类或者实现类也是抽象的或者也是接
抽象类与接口的不同点
  1. 修饰关键字的不同,接口只能用public,抽象类都可以
  2. 多继承,接口可以多继承,接口不能
  3. 实现方法不同,抽象类是通过继承extends,接口是通过实现implements
  4. 接口不能有main方法,抽象类可以有main方法
  5. 接口没有构造方法,抽象类有构造方法,可以初始化一些属性
  6. 速度,接口速度比较慢,抽象类的速度比较快
抽象类与接口的使用
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完全是不同的类型
posted on 2019-02-14 15:04  jeasonchen001  阅读(247)  评论(0)    收藏  举报