前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >抽象类和接口在什么情况下适用?

抽象类和接口在什么情况下适用?

作者头像
用户7656790
发布2021-01-28 18:36:33
3260
发布2021-01-28 18:36:33
举报
前言

上篇文章《抽象类不能实例化》中,我在文章最后顺嘴提了一下接口,就是当时讲抽象类的时候说接口也是抽象类,是个特殊的抽象类。

结果怎么着,那个学弟又问我了:“学长,抽象类和接口有什么区别呢?”

来,干!

问题:

到底什么时候该用抽象类,什么时候该用接口呢?

如何区分使用抽象类和接口

大家在比较抽象类和接口的区别时,一定要强调抽象类描述的是事物的本质,而接口描述的是事物的功能。

比如:保温杯是水杯,所以水杯应该设计为抽象类,保温杯有保温的功能,所以保温应该设计为接口。

可理解为:

class 保温杯 extends 水杯 implements 保温

用实例说话

代码语言:javascript
复制
  1. package zmldemo;
  2. //水杯抽象类
  3. public abstract class Cup {
  4. String name;//水杯名称
  5. String color;//水杯颜色
  6. public Cup() {
  7. }
  8. public Cup(String name, String color) {
  9. this.name = name;
  10. this.color = color;
  11. }
  12. //水杯使用说明方法
  13. public abstract void useCup();
  14. }
代码语言:javascript
复制
  1. package zmldemo;
  2. //保温接口
  3. public interface BaoWen {
  4. //保温方法
  5. public void baoWen();
  6. }
代码语言:javascript
复制
  1. package zmldemo;
  2. //刷牙杯
  3. public class ShuaYaBei extends Cup {
  4. public ShuaYaBei() {
  5. }
  6. public ShuaYaBei(String name, String color) {
  7. super(name, color);
  8. }
  9. @Override
  10. public void useCup() {
  11. System.out.println("我是"+this.color+"的"+this.name+","+"我是用来刷牙的");
  12. }
  13. }
代码语言:javascript
复制
  1. package zmldemo;
  2. //保温杯
  3. public class BaoWenBei extends Cup implements BaoWen{
  4. public BaoWenBei(){
  5. }
  6. public BaoWenBei(String name,String color){
  7. super(name,color);
  8. }
  9. @Override
  10. public void useCup() {
  11. System.out.println("我是"+this.color+"的"+this.name+","+"我是用来喝水的");
  12. }
  13. @Override
  14. public void baoWen() {
  15. System.out.println("我能对水杯里的水进行保温");
  16. }
  17. }
代码语言:javascript
复制
  1. package zmldemo;
  2. public class CupTest {
  3. public static void main(String[] args) {
  4. ShuaYaBei shuaYaBei = new ShuaYaBei("刷牙杯","红色");
  5. shuaYaBei.useCup();
  6. BaoWenBei baoWenBei = new BaoWenBei("保温杯","金黄色");
  7. baoWenBei.useCup();
  8. baoWenBei.baoWen();
  9. }
  10. }

运行结果:

我想看完这个例子,抽象类和接口大家应该能理解了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 五角钱的程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档