抽象类和接口

抽象类:

  1. 抽象类必须使用abstract class声明,一个抽象类中可以没有抽象方法。抽象方法必须写在抽象类或者接口中。
  2. 只声明而未实现的方法称为抽象方法(未实现指的是:没有“{}”方法体),抽象方法必须使用abstract关键字声明。
  3. 抽象类本身是不能直接进行实例化操作的,即:不能直接使用关键字new完成, 但是在子类创建对象时, 抽象父类也会被JVM实例化。
  4. 一个抽象类必须被子类所继承,被继承的子类(如果不是抽象类)则必须覆写(重写)抽象类中的全部抽象方法。
  5. 抽象类不能使用final声明,因为final属修饰的类是不能有子类的 , 而抽象类必须有子类才有意义,所以不能。
  6. 抽象类可以有构造方法,而且子类对象实例化的时候的流程与普通类的继承是一样的,都是要先调用父类中的构造方法(默认是无参的),之后再调用子类自己的构造方法。

接口:

  1. 如果一个类中的全部方法都是抽象方法,全部属性都是全局常量,那么此时就可以将这个类定义成一个接口。
  2. 在接口中只有常量,因为定义的变量,在编译的时候都会默认加上 public static final。
  3. 在接口中的方法,永远都被 public 来修饰,没有修饰的情况下默认是public abstract。
  4. 接口中没有构造方法,也不能实例化接口的对象。(所以接口不能继承类),如果一个接口要想使用,必须依靠子类。 子类(如果不是抽象类的话)要实现接口中的所有抽象方法。
  5. 接口可以实现多继承 也就是 可以extends interfaceA,interfaceB。

接口和抽象类的区别:

  1. 抽象类要被子类继承,接口要被类实现。
  2. 接口只能声明抽象方法,抽象类中可以声明抽象方法,也可以写非抽象方法。
  3. 接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
  4. 抽象类使用继承来使用, 无法多继承。 接口使用实现来使用, 可以多实现。
  5. 抽象类中可以包含static方法 ,但是接口中不允许(静态方法不能被子类重写,因此接口中不能声明静态方法)
  6. 接口不能有构造方法,但是抽象类可以有。
posted @ 2021-03-17 12:10  进击的小白·  阅读(188)  评论(0)    收藏  举报