接口和抽象类的区别

什么是抽象类:

  • 抽象类的方法只有声明没有实现,需要被abstract关键字修饰。
  • 抽象方法必须定义在抽象类中,该类也必须被abstract关键字修饰。
  • 除了抽象方法之外,抽象类还可以包含具体数据和具体方法。
  • 类即使不含抽象方法,也可以将类声明为抽象类。
  • 抽象类不能被实例化。也就是说,如果将一个类声明为abstract,就不能创建这个类的对象。

抽象方法充当着占位的角色,它们的具体实现在子类中。扩展抽象类可以有两种选择:

  • 1.在抽象类中定义部分抽象类方法或不定义抽象方法,这样也就必须将子类也标记为抽象类。
  • 2.定义全部的抽象方法,这样一来,子类就不是抽象类了。

抽象类必须有其子类覆盖了所有的抽象方法后,才可以被实例化,否则这个子类还是是个抽象类。


什么是接口:

  • 接口主要用来描述类具有什么功能,而并不给出每个功能的具体实现。使用interface关键字来定义
  • 一个类可以实现一个或多个接口,并在需要接口的地方,随时使用实现了相应接口的对象。
  • 在java中,接口不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义。
  • 接口中所有的方法自动地属于public
  • 接口可以有很多方法,在接口中还可以定义常量。
  • 接口不能含有实例域,提供实例域和方法实现的任务应由实现接口的那个类来完成。
    为了让类实现一个接口,通常需要下面两个步骤:
    • 1.将类声明为实现给定的接口。需要使用关键字implements
    • 2.对接口中的所有方法进行定义。

接口和抽象类的区别:

  • 1. 接口的方法默认是 public,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),抽象类可以 有非抽象的方法
  • 2. 接口中的实例变量默认是 final 类型的,而抽象类中则不一定
  • 3. 一个类可以实现多个接口,但多只能实现一个抽象类
  • 4. 一个类实现接口的话要实现接口的所有方法,而抽象类不一定
  • 5. 接口不能用 new 实例化,但可以声明,但是必须引用一个实现该接口的对象 从设计层面来说,抽象是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范。

备注:在JDK8中,接口也可以定义静态方法,可以直接用接口名调用。实现类和实现是不可以调用的。如果同时实现两个接口,接口中定义了一样的默认方法,必须重写,不然会报错。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值