抽象类、抽象方法和接口

  • Post author:
  • Post category:其他




抽象类和抽象方法


关键字:abstract

:由abstract修饰的方法叫抽象方法;由abstract修饰的类叫抽象类。


  • 抽象方法

    只有功能声明,没有方法体。
  • 抽象类可以包含抽象方法,也可以不包含抽象方法,抽象类可以有非抽象方法。——也就是说,抽象类中是可能有方法体的,只要那个方法不是抽象方法就行。
  • 抽象类不能被实例化,就是不能产生实例化对象,所以必须被继承才能使用。——也就是说,抽象类一定是一个父类。抽象类(abstract)一定不能和final同时使用。
  • 子类继承抽象父类并实现父类的所有抽象方法才可以实例化,如果有未实现的抽象方法则该子类仍为一个抽象类,无法创建对象。
  • 抽象类可以实现接口,抽象类也可以继承抽象类
  • 抽象类拥有构造方法,对自身进行初始化,供子类使用



接口


关键字:interface

  • 接口不能实例化,只能被实现。
  • 接口的所有方法都是抽象的,不能有方法体。接口只能做方法声明。(java8中 接口可以有实现方法,使用default修饰)
  • 如果一个类实现接口时没有实现全部接口方法,那么该类也只能为抽象类。
  • 接口不可以实现接口,但可以继承一个或多个接口

  • 特征

    • 所有成员变量都是public、static、final类型,并且必须赋初值。
    • 所有方法都是public、

      abstract类型

    • 所有嵌套类型(类或接口)都是public、static类型。
    • 因为成员变量都是static的,所以接口里的成员变量不再属于子类的某个对象,而是属于这个接口,子类的对象里就没有父类这个成员变量。如果要使用该变量,直接接口名.成员变量 即可调用。
  • 接口没有构造方法



抽象类与接口的区别

  • 抽象类中的方法可以有方法体,接口中不行
  • 抽象类的成员变量可以是各种类型的,接口中的成员变量只能是public static final类型
  • 一个类只能继承一个抽象类,而一个类可以实现多个接口



版权声明:本文为weixin_44847031原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。