抽象类和接口的区别

来源:互联网 发布:南方寝饰淘宝旗舰店 编辑:程序博客网 时间:2024/06/09 21:30

先讲抽象类

  1. 抽象类种可以有抽象方法,抽象方法不能有方法体即不出现{},可以没有分号。
  2. 抽象类中可以有普通方法,普通方法必须有{}。
  3. 抽象类中的普通方法可以调用抽象方法 。
  4. 抽象类不能有自己的对象,就是不能被new,但是可以有构造方法,可在子类用super调用。
  5. 抽象类中定义的方法需要依赖子类来实现
  6. 抽象类中定义的抽象方法,在子类实现的时候必须实现抽象类中的全部方法
  7. 只能单继承

再讲接口

  1. 接口是更为纯粹的抽象类,不能有任何方法的实现,只能有方法的声明。
  2. 接口也是依赖于子类,“子类”也叫做实现类。
  3. 实现类必须实现接口中定义的全部方法。
  4. 接口没有构造函数 所以接口没有对象。
  5. 接口是多实现的,java语言的特点单继承,多实现的。
  6. 接口是可以继承接口的,实现类必须实现全部的方法。
  7. 接口是否可以加abstract关键字,可以也可以没有,没有区别。
  8. 可以有抽象方法
  9. 接口中的变量就是常量,只能被static、public、final修饰,不写修饰符,默认的也是这三个。
  10. interface修饰

共性

  1. 都不能有自己的实例对象,即不能被new
  2. 都依赖于子类的实现,子类必须实现接口中的所有方法,必须实现抽象类中的所有抽象方法

区别

  1. 抽象类,可以有普通方法和执行语句,接口不可以
  2. 抽象类只能是单继承,接口是多实现
  3. 接口中定义的变量就是常量,而抽象类中就是变量
  4. 接口中的变量只能被static、public、final修饰,抽象类都可以修饰。
0 0