抽象类和接口的区别

本文探讨了抽象类与接口在编程中的重要角色。抽象类用于定义共同行为,包含抽象方法,不能直接实例化。子类继承抽象类必须实现所有抽象方法。接口更抽象,仅包含公共抽象方法,允许类实现多个接口。接口主要用于体现多态性和系统解耦,方便更换实现。设计时,抽象类关注类的抽象,接口关注行为规范。在实际开发中,合理利用抽象类与接口能提升代码的灵活性和可维护性。
摘要由CSDN通过智能技术生成

抽象类

抽象方法是指没有方法体的方法,同时抽象方法还必须使用关键字abstract做修饰。
注意点:

  • 拥有抽象方法的类就是抽象类,抽象类也要用abstract关键字声明。
  • 抽象类不能实例化,依靠子类向上转型。
  • 子类如果需要实例化,就必须重写所继承的抽象类中的所有抽象方法。

向上转型:
定义:

Animal  animal = new Dog();
  • 父类对象指向子类对象。
  • 父类对象无法调用子类对象中特有的方法。
  • 通过父类引用变量调用的是子类调用或覆盖父类中的方法,不是父类的方法。

向下转型

  • 将一个指向子类对象的父类引用赋给一个子类的引用,称为向下转型,必须进行强制类型转换。

接口和抽象类的区别

  • 接口比抽象类更加的抽象
  • 抽象类可以提供成员方法的实现细节,而接口中只能出现public abstract 方法
  • 抽象类的成员变量可以是各种类型的,而接口中的成员变量只能是public static fina类型的
  • 接口中不能含有静态代码块及静态方法,而抽象类中可以有。
  • 一个类只能继承一个抽象类,而一个类可以实现多个接口
  • 设计层的区别
    – 抽象类是对一种事物的抽象,即对类的抽象,而接口是对行为的抽象。

为什么要使用接口:

  • 如果项目过于复杂,需要一个抽象力很高的人专门设计这个接口,他可以忽略实现的细节,把精力花在涉及上,提高效率。
  • 体现多态性,实现系统的解耦,如果需要将原来使用的mysql换成orcal,那么可以专门针对接口写一套实现,而不会惊动上层。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黑cc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值