接口与抽象类的区别

一、抽象类概述

        抽象类是abstract修饰的,是一种特殊的类。抽象类里面可以用抽象方法、实际方法以及属性变量,实际方法为具体处理代码的方法,抽象方法表现为只有方法的声明,没有方法体。抽象类拥有构造方法,但是无法被实例化出来,构造方法的作用是为其子类提供初始化操作。

        包含抽象方法的一定是抽象类,但抽象类不一定有抽象方法,抽象方法只能是public或者protected修饰的,默认为public。如果一个子类需要继承抽象类,则需要实现父类所有的抽象方法,如果子类同样是抽象类,可以不实现父类的抽象方法。

二、接口概述

        接口是interface修饰的,里面可以有抽象方法以及常量,但是不能有公共的方法或者属性。接口还可以定义静态方法和默认方法,静态方法在接口中使用static关键字进行声明,可以直接通过接口名调用,不需要创建接口的实例,静态方法不能被子类重写。默认方法在接口中使用default关键字进行声明,可以有方法体,提供了接口的默认实现,实现类可以选择保留默认方法的实现,也可以根据自身需求进行重写。

        接口是主要用于定义开发的规范,接口的可扩展性强。接口不能直接使用,需要有一个实现类实现接口,接口是多实现的,弥补了类只能单继承的不足。

三、接口与抽象类的区别

  • 接口是多实现的,抽象类是单继承,两者都不可被实例化出来
  • 接口和抽象类都可以有抽象方法、静态方法、默认方法,静态方法是属于类本身而不是实例的方法,这些方法可以直接通过抽象类的名称进行调用。抽象类可以有实际方法,接口不能定义。

  • 接口中无法定义构造方法,但是抽象类可以定义抽象方法,作用是为其子类提供初始化操作。

  • 接口只能定义常量,无法定义变量,抽象类可以定义常量以及变量

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值