Java接口与抽象类的异同点

接口:

如果一个抽象类的所有方法都是抽象方法,则可以把这个类用另外一种形式来定义,即接口。

接口特点:

  1.  一个接口可以被多个类实现;
  2.  接口不能实例化,不能创建构造方法;
  3.  一个接口可以实现多个接口,一个接口可以继承接口;
  4.  jdk8.0 之后,接口不仅可以修饰,全局常量,抽象方法,静态方法,默认方法;
  5.  接口中的静态方法,只能接口进行调用;
  6.  接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。

抽象类:

使用 abstract 修饰的类称为抽象类。

抽象类特点:

  1.  抽象类中可以没有抽象方法;
  2.  类中可以定义抽象方法(abstract修饰的方法); 
  3.  抽象类不能直接实例化,要通过其普通子类进行实例化,抽象类可以创建构造方法,为子类调用;
  4.  子类继承抽象类必须实现抽象类中所有的抽象方法,否则子类也必须定义为抽象类;
  5.  抽象类修饰符必须为public或者protected,不能是private,因为创建抽象类,就是要被其他类继承,用private修饰了,则不能被子类继承,子类便无法实现该方法。

接口与抽象类异同点:

  1. 一个类实现接口的话要实现接口的所以方法,而抽象类不一定;
  2. 类可以实现很多个接口,但是只能继承一个抽象类;
  3. 接口中声明的变量默认都是final的。抽象类可以包含非final的变量;
  4. 接口和抽象类都不可以被实例化;
  5. 接口不能创建构造方法,抽象类可以创建构造方法;
  6. 接口中的静态方法,只能接口进行调用,而抽象类不是;
  7. 实现接口的类必须实现其中的所有方法,继承自抽象类的子类实现所有的抽象方法。
发布了25 篇原创文章 · 获赞 7 · 访问量 2798

猜你喜欢

转载自blog.csdn.net/LagerSwan/article/details/101516216