Java——接口和抽象类的异同

一、接口和抽象类的定义

接口:

  • 可以看作抽象类的变体;
  • 接口中的所有方法都是抽象的;
  • 接口中的成员变量都是static final类型;
  • 接口可以间接实现多重继承;

抽象类: 类中有方法声明为abstract(抽象方法)的类。

  • 可以有私有方法或者私有变量;
  • 类中的抽象方法不能包含方法体;
  • 子类实现方法必须含有相同或者耕地的访问级别(public->protected->private);
  • 抽象方法被abstract修饰

二、接口和抽象类的区别

  1. 实现: 接口中没有方法的实现,java1.8之后可以定义default方法体;抽象类中可以定义方法和实现方法。
  2. 关键字: 接口通过interface 关键字定义,使用implements关键字来实现接口;抽象类使用 abstract 关键字定义,子类使用extends关键字来继承。
  3. 构造器: 接口不能有构造器;抽吸类可以有构造器。
  4. **与正常类区别:**接口与类完全不同;抽象类是一种补能实例化的特殊类。
  5. 多继承: 接口可以继承一个或多个接口;抽象类只能继承一个类。
  6. 访问修饰符: 接口默认修饰符是public,成员变量默认static final;抽象方法可以有publicprotecteddefault修饰。
  7. main方法: 接口没有main方法,不可以直接运行;抽象方法可以有main方法。
  8. 运行速度: 接口稍慢(因为需要时间寻找在类中实现的方法);抽象类运行速度较快。
  9. 强调点: 接口强调特定功能的实现;而抽象类强调所属关系。
  10. 成员变量: 接口成员变量默认为public static final,必须赋初值,不能被修改;抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值。
  11. 成员方法: 接口中成员方法都是publicabstract;抽象类中抽象方法被abstract修饰,不能被privatestaticsynchronizednative等修饰,必须以分号结尾,不带花括号。

三、接口和抽象类的相同点

  1. 都不能实例化;
  2. 接口的实现类或抽象类的子类只有实现了各自其中的方法后,才能被实例化。

四、接口和抽象类的使用

**接口:**被用于常用的功能,便于之后的维护和添加删除,不适用于功能累积
**抽象类:**充当公共类,不适用于之后的代码修改,适用于功能累积。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值