抽象类和接口的区别

抽象类:

  1.含有abstract修饰符的class即为抽象类

  2.abstract类不能创建实例对象

  3.如果一个类中含有abstract修饰的方法,这个类必须定义为abstract class

  4.抽象类中定义的抽象方法必须被子类实现,否则子类也是抽象类。所以不能有抽象的构造方法和抽象的静态方法

 

接口:

  1.接口中所有的方法必须是抽象的

  2.接口中定义的成员变量默认为:public static final修饰

  3.接口中定义的方法默认为:pubilc abstract修饰。而且修饰符只能是public

  4.接口不能被实例化

总结下两者的语法区别:

  1.抽象类可以有构造方法。       接口中不能有

  2.抽象类中可以定义普通的成员变量也可以定义静态常量。      接口中只能定义静态常量

  3.抽象类中可以定义抽象方法,也可以定义普通方法。      接口中只能定义抽象方法

  4.抽象类中定义的抽象方法可以用public protected 修饰     接口中值能用public修饰

  5.抽象类中可以定义静态方法    接口中不能定义静态方法(JDK1.8后可以定义静态方法,和默认方法)

  6.一个类可以实现多个接口    但只能继承一个抽象类             接口之间可以有多继承,单接口不能实现接口

结论:说白了 抽象类除了用abstract修饰和不能被实例化  其他的都和普通类一样              接口中只能有静态常量和抽象方法而且。

原文地址:https://www.cnblogs.com/LittleBoys/p/12066909.html