Java面向对象之——接口;摸清楚接口和抽象类的区别

本文详细介绍了Java中的接口和抽象类的区别。接口不包含实例字段,只能有抽象方法和全局常量,且支持多实现。而抽象类则可以有实例字段和非抽象方法。接口强调面向接口编程,降低模块间耦合,有利于项目维护和扩展。抽象类与接口的主要区别在于继承、方法定义和变量类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

接口的概念和抽象类很像,不同的地方是:

1,接口不允许有实例字段(对象中的数据称之为实例字段),而抽象类中允许有;

2,接口中只能允许有抽象方法和全局常量;(全局常量就是由 public static final 修饰的属性)


接口语法

定义格式:

interface 接口名称{
	全局常量;
	抽象方法;
}

因为接口里面全部是抽象的方法,所以需要依赖自己的”子“来实现,这个”子“就是接口的实现类;


接口的实现implements

定义格式:
class 子类 implements 父接口1,父接口2...{

}

如果一个子类要继承父类,又要实现接口的话,格式为下:
class 子类 extends 父类 implement 父接口1,父接口2...{

}

从这里可以看出接口可以多实现,一个子类可以有多个父接口。

注意的是:

子类如果是抽象的话,可以不全部实现接口的所有方法。

子类如果是非抽象的话,就需要实现接口所有方法。


写到这里,就要提出一个概念:面向接口的编程思想。

之前我们经历了面向过程编程思想,面向对象编程思想,现在思维可以更加提高一层:面向接口编程思想。

面向接口关注的是抽象的部分,我们在描述一个项目的时候,是由多个模块组成,我们在写之前,通过抽象的部分把项目的规范、约束提前定义出来,从宏观角度把这个项目设计出来,但是流程中没有一行实现的代码。

这样可以降低模块之间的耦合性,易于项目的升级(把需要更改的模块单独领出来修改,而不影响程序出bug),利于维护和扩展。

建议在写代码时,先写接口。


我们来看一组代码:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6LkYWVNZ-1632799223360)(D:\typora\FILE\图片\QQ图片20210920173639.png)]

报错是因为接口中只能有抽象方法;

简写:

  1. public static final 可以省略,因为接口中只能有全局常量;
  2. 修饰方法的public关键字也可以省略,因为接口需要被实现,方法全是public方法;

接口的继承

除此之外,接口还可以多继承接口:

interface C extends A,B{

}

接口和抽象类的区别

  1. 抽象类被子类继承,接口被类实现;
  2. 接口只能声明抽象方法,而抽象类可以部分抽象方法;
  3. 接口定义的变量只能是全局常量,抽象类中是普通变量;
  4. 抽象类无法多继承,接口可以;
  5. 抽象类包含static方法,而接口不可以(因为静态方法不能被子类重写)
  6. 接口不能有构造方法,抽象类可以有;

常量,抽象类中是普通变量;
4. 抽象类无法多继承,接口可以;
5. 抽象类包含static方法,而接口不可以(因为静态方法不能被子类重写)
6. 接口不能有构造方法,抽象类可以有;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值