抽象类与接口的区别

前言:

       在实际开发中,我们通常不理解抽象类与接口的区别,而且这个问题也是经常被面试官问到的一个问题.下面我从三个方面讲解一下它们的区别.

讲义:

       抽象类特点:

              抽象类不能被实例化,所以其中的函数用static来修饰.

              抽象类可以包含抽象方法,这是其它类所不能的!抽象方法只能存在于抽象类中,且不包含任何实现,派生类必须覆盖它们.

             抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法,也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们.

             如果派生类没有实现抽象基类的所有抽象方法,则该派生类必须声明为抽象类.

       接口特点:

             不能被实例化

              抽象中的属性,方法等默认是Public的,在实现它们的类中必须将属性,方法等声明为Public的.

             接口可以定义类构造函数,但不能定义实例构造函数.

       抽象类与接口区别:

             相同点:

                     都不能被实例化

             不同点:

                    抽象类可以有实现的过程,而接口没有.

                    接口除了可以包含方法外,还可以包含属性,索引器与事件.

                   接口实现了系统中的松耦合,抽象类与子类,是父子关系.接口与实现类,是松耦合关系.

                   一个类只能继承一个抽象类,但可以实现多个接口.

                   继承类对于两者所涉及的实现不同,继承类对于抽象类中抽象方法的实现,可以不用重写,可以延用抽象类的方法.对于接口,必须要全部实现.

                   在抽象类中,如果新增加一个方法的话,继承类中可以不作任何处理 ,但对于接口,必须要实现它.

                   接口不光作用于引用类型,也可以作用于值类型.抽象类只能作用于引用类型.

                   抽象类的多重继承比较灵活,而接口的多重继承需要借助虚函数.

                  

                   

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值