抽象类和接口的区别

先讲抽象类

  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修饰,抽象类都可以修饰。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值