抽象类、抽象方法和接口

抽象类和抽象方法

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

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

接口

关键字:interface

  • 接口不能实例化,只能被实现。
  • 接口的所有方法都是抽象的,不能有方法体。接口只能做方法声明。(java8中 接口可以有实现方法,使用default修饰)
  • 如果一个类实现接口时没有实现全部接口方法,那么该类也只能为抽象类。
  • 接口不可以实现接口,但可以继承一个或多个接口
  • 特征
    • 所有成员变量都是public、static、final类型,并且必须赋初值。
    • 所有方法都是public、abstract类型
    • 所有嵌套类型(类或接口)都是public、static类型。
    • 因为成员变量都是static的,所以接口里的成员变量不再属于子类的某个对象,而是属于这个接口,子类的对象里就没有父类这个成员变量。如果要使用该变量,直接接口名.成员变量 即可调用。
  • 接口没有构造方法

抽象类与接口的区别

  • 抽象类中的方法可以有方法体,接口中不行
  • 抽象类的成员变量可以是各种类型的,接口中的成员变量只能是public static final类型
  • 一个类只能继承一个抽象类,而一个类可以实现多个接口
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值